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

  • 相关阅读:
    MAC配置DNS服务器
    真机IOS8.3以上的文件夹共享
    appium + python的环境配置_windows
    python 的时间与日期
    sublimetext 2 编译文件带input时 提示 EOFError: EOF when reading a line
    cmd无法输入中文解决方案
    配置python学习环境遇到的问题:[Decode error
    monkey初接触
    Android logcat输出中文乱码
    运行 命令框不记录打过的命令,重启后CMD里面是空的.上次打过的命令消失了.
  • 原文地址:https://www.cnblogs.com/tarantino/p/10211739.html
Copyright © 2011-2022 走看看