zoukankan      html  css  js  c++  java
  • python中的集合

    在python中,普通集合是可变数据类型

    通过以下案例说明:

    >>> s = {1, 2, 3, 4}
    >>> id(s)
    2108634636808
    >>> s.add(5)
    >>> s
    {1, 2, 3, 4, 5}
    >>> id(s)
    2108634636808

    在增加集合中的元素后,集合内存地址并没有改变,说明集合是可变数据类型

    集合的重要特点是去重:

    >>> s = {1, 2, 2, 3}
    >>> s
    {1, 2, 3}

    集合的操作

    常见之增删改:

    >>> s = {1, 2, 3, 4, 5, 6}              
    >>> s.add(7)                         #增加   
    >>> s
    {1, 2, 3, 4, 5, 6, 7}
    >>> s.discard(8)                       #discard删除不存在的元素不会报错
    >>> s
    {1, 2, 3, 4, 5, 6, 7}
    >>> s.discard(7)
    >>> s
    {1, 2, 3, 4, 5, 6}
    >>> s.remove(8)                        #remove删除不存在的元素会报错
    Traceback (most recent call last):
      File "<pyshell#233>", line 1, in <module>
        s.remove(8)
    KeyError: 8
    >>> s.remove(6)
    >>> s
    {1, 2, 3, 4, 5}
    >>> s.pop()
    1
    >>> s
    {2, 3, 4, 5}

      >>> s.update({1,2,3})                    #批量增加并自动去重
      >>> s
      {1, 2, 3, 4, 5}

      >>> s.clear()                         #清空集合元素

      >>> s

      set()

      #集合没有查询功能

    集合的重要功能,关系测试:

    >>> s1 = {1, 2, 3, 4}
    >>> s2 = {2, 4, 5, 9}
    #s1中有而s2中没有的
    >>> s1 - s2 {1, 3} >>> s1.difference(s2) {1, 3}
    #S1和s2的并集
    >>> s1 | s2 {1, 2, 3, 4, 5, 9} >>> s1.union(s2) {1, 2, 3, 4, 5, 9}
    #S1和s2的交集
    >>> s1 & s2 {2, 4}
    >>> s1.intersection(s2) {2, 4}
    #s1和s2的对称差集(并集-交集):
    >>> s1.symmetric_difference(s2)
    {1, 3, 5, 9}
    #将s1-s2结果赋给s1  
    >>> s1.difference_update(s2)
    >>> s1
    {1, 3}
    #将s1,s2的交集赋给s1
    >>> s1 = {1, 2, 3, 4}
    >>> s2 = {2, 4, 5, 9}
    >>> s1.intersection_update(s2)
    >>> s1
    {2, 4}
    #将s1,s2的对称差集赋给s1
    >>> s1 = {1, 2, 3, 4}
    >>> s2 = {2, 4, 5, 9}
    >>> s1.symmetric_difference_update(s2)
    >>> s1
    {1, 3, 5, 9}

    集合的关系判断

    >>> s1 = {1, 2}
    >>> s2 = {1, 2, 3}
    >>> s1.issubset(s2)     #A是否是B的子集
    True
    >>> s2.issuperset(s1)   #A是否是B的父级
    True
    >>> s1 <= s2       #简写形式
    True
    >>> s1.isdisjoint(s2)   #判断A和B是否不相交
    False

    下面简单认识一下不可变集合----frozenset:

    >>> s = {1, 2, 3, 4}
    >>> s1 = frozenset(s)
    >>> s1
    frozenset({1, 2, 3, 4})

    通过frozenset函数将集合变成不可变集合,显然不可变集合就没了上面普通集合的增删操作,而仅仅保留关系测试和关系判断的操作,使用方法同上。

  • 相关阅读:
    阿里巴巴数据库分库分表的最佳实践
    Tomcat控制台日志乱码解决方案
    区块链:多链体系在提升性能的同时,怎么去保证单链被攻击性问题
    在 CentOS 7 1801 中安装 PostgreSQL-11
    为什么即使现在生意不太好做,还是有一批批的人开始做生意?
    投资十几万可以做点什么生意?
    理发店真是一个暴利行业吗?
    今日头条是怎么盈利的?
    中国都有哪些著名的风投失败的案例?
    基于语音应用的10项最佳实践
  • 原文地址:https://www.cnblogs.com/tarantino/p/10211739.html
Copyright © 2011-2022 走看看