• Python 集合


    一、集合概念

            集合(set)是一个无序的不重复元素序列。

    二、集合的创建

            可以使用大括号{}或者set方法创建集合,但是创建一个空集合必须使用set而不能使用空{},因为在python中空{}用于创建空字典。

    1、set函数

            set()函数创建一个无序不重复元素集,返回值为新的集合对象。示例如下:

    1. list_1 = ['h','l','e','l','o']
    2. set_1 = set(list_1)
    3. print(set_1) #输出为{'o', 'h', 'e', 'l'}

    三、 集合运算规则

    1、交集

            set_1 & set_2:返回一个新的集合对象,包括同时在集合set_1和set_2中的共同元素,示例如下:

    1. list_1 = ['h','l','e','l','o']
    2. list_2 = ['w','o','r','l','d']
    3. set_1 = set(list_1)
    4. set_2 = set(list_2)
    5. print(set_1 & set_2) #输出为{'o', 'l'}

            交集方法为set.intersection,示例如下:

    1. set1 = {1,2,3,4,5}
    2. set2 = {2,3,4,6,7,8}
    3. print(set1.intersection(set2))#输出为{2, 3, 4},在set1中存在又在set2中存在的元素

    2、 并集

            set_1 | set_2:返回一个新的集合对象,包括集合set_1和set_2中的所有元素,示例如下:

    1. list_1 = ['h','l','e','l','o']
    2. list_2 = ['w','o','r','l','d']
    3. set_1 = set(list_1)
    4. set_2 = set(list_2)
    5. print(set_1 | set_2) #输出为{'l', 'w', 'o', 'e', 'r', 'h', 'd'}

            并集方法为set.union,示例如下:

    1. set1 = {1,2,3,4,5}
    2. set2 = {2,3,4,6,7,8}
    3. print(set1.union(set2))#输出为{1, 2, 3, 4, 5, 6, 7, 8}

    3、 差集

            set_1 - set_2:返回一个新的集合对象,包括在集合set_1中但不在set_2中的元素,示例如下:

    1. list_1 = ['h','l','e','l','o']
    2. list_2 = ['w','o','r','l','d']
    3. set_1 = set(list_1)
    4. set_2 = set(list_2)
    5. print(set_1 - set_2) #输出为{'h', 'e'}

            差集方法为set.difference,示例如下:

    1. set1 = {1,2,3,4,5}
    2. set2 = {2,3,4,6,7,8}
    3. print(set1.difference(set2))#输出为{1, 5} set1去除set2中存在的元素

    4、 补集

            set_1^set_2:返回一个新的集合对象,包括集合set_1和set_2的非共同元素,即异或运算,示例如下:

    1. list_1 = ['h','l','e','l','o']
    2. list_2 = ['w','o','r','l','d']
    3. set_3 = {'l'}
    4. set_1 = set(list_1)
    5. set_2 = set(list_2)
    6. print(set_1 ^ set_2) #输出为{'w', 'e', 'r', 'h', 'd'}
    7. print(set_1 ^ set_2 ^ set_3) #输出为{'e', 'l', 'd', 'w', 'r', 'h'} ,注意异或运算,三者异或时,三个共有的元素也为真

            补集方法为 set.symmetric_difference,示例如下:

    1. set1 = {1,2,3,4,5}
    2. set2 = {2,3,4,6,7,8}
    3. print(set1.symmetric_difference(set2))#输出为{1, 5, 6, 7, 8},set1与set2的异或运算

    5、 集合的比较 

    (1) 集合的比较方法

    set.issubset:判断一个集合是不是另一个集合的子集,是则返回True,否则返回False.

    set.superset:判断一个集合是不是另一个集合的超集,是则返回True,否则返回False

    示例如下:

    1. set_1 = {1,2,3,4,5}
    2. set_2 = {1,2,3}
    3. print(set_1.issuperset(set_2))#输出为True   set_1是set_2的超集
    4. print(set_2.issubset(set_1))#输出为False  set_2是set_1的子集
    (2)集合的比较操作符

    <:真正意义上的子集,在集合A是集合B的子集的同时A不等于B

    <=:子集或相等,集合A是集合B的子集或相等

    ==:相等,集合A和集合B中的元素相等,但是两个集合并不必须相等()

    >=:超集或相等,集合A是集合B的超集或相等

    >:超集,集合A是集合B的超集

    示例如下:

    1. set_1 = {1,2,3,4,5}
    2. set_2 = {1,2,3}
    3. set_3 = {1,2,3,3}
    4. print(set_1 > set_2)  #输出为True,set_1是set_2的超集
    5. print(set_1 >= set_1) #输出为True
    6. print(set_2 == set_3) #输出为True
    7. print(set_2 <= set_2) #输出为True
    8. print(set_2 < set_1)  #输出为True,set_2是set_1的子集

    四、集合的基本方法

    1、元素添加

       (1)set.add方法

            向集合添加元素,但只能添加可哈希数据类型,即不可变数据类型:数值、元组、字符串。示例如下:

    1. set_1 = {'h'}
    2. set_1.add('e')
    3. print(set_1) #输出为{'e', 'h'}

    注意:add方法单次只能添加一个元素,否则会报错TypeError: add() takes exactly one argument (2 given

      (2)set.update

            向集合添加元素,但只能添加可迭代的数据类型,即字符串、元组、列表、字典。update方法会将元素进行拆分再添加,当参数为字典时,会将字典中的健作为集合元素添加进集合,忽略值。示例如下:

    1. set_1 = {'h'}
    2. set_1.update((1,2),(2,3),{8:1,9:3},('l','8'))
    3. print(set_1) #输出为{'l', 1, 2, 3, 'h', '8', 8, 9}

     补充add方法与update方法的区别:

    (1)参数不同:add方法只可以添加不可变数据类型,如数字、元组、字符串,否则会报错TypeError: unhashable type: 'set',并且一次智能添加一个元素;而update方法只能添加可迭代元素,如字符串、列表、元组、字典,若添加数字会报错object is not iterable,一次可以添加多个元素。

    (2)返回结果不同:add方法会把元素整体性的添加进去,即元素为元组时,加入到集合中也作为元组存在;update方法会把元素查分再添加进去,当参数为字典时,会将字典中的健作为集合元素添加进集合,忽略值。

    2、元素删除

     (1)set.remove

            从集合中移除元素,如果元素在集合中不存在,则会引发KeyError.示例如下:

    1. set_1 = {'h','e'}
    2. set_1.remove('h')
    3. print(set_1)#输出为{'e'}
    4. set_1.remove('x')#输出为KeyError: 'x'
    (2)set.discard方法

             从集合中移除元素。如果元素不存在,不报错,该方法无返回值。示例如下:

    1. set_1 = {'h','e'}
    2. set_1.discard('h')
    3. print(set_1)#输出为{'e'}
     (3)set.pop方法

             从集合中随机移除并返回该元素,如果集合为空则会引发KeyError。Pop方法会对集合进行无序的排列,然后将这个无需排列集合的左边第一个元素进行删除。示例如下:

    1. set_1 = {'h','e','l','2'}
    2. set_1.pop()
    3. print(set_1)#输出为{'l', '2', 'h'}
    4. set_1.pop()
    5. print(set_1)#输出为{'2', 'h'}
    6. set_1.pop()
    7. print(set_1)#输出为{'h'}
    8. set_1.pop()
    9. print(set_1)#输出为set()
    10. set_1.pop()
    11. print(set_1)#输出为KeyError: 'pop from an empty set'

    (4)set.clear方法

            移除集合中所有元素。示例如下:

    1. set_1 = {'h','e','l','2'}
    2. set_1.clear();
    3. print(set_1)#输出为set()

    3、 Set.isdisjoint方法

    用于判断两个集合是否包含相同的元素,如果没有则返回True,否则返回False。示例如下:

    1. set_1 = {1,2,3}
    2. set_2 = {2,3,4}
    3. set_3 = {4,5,6}
    4. print(set_1.isdisjoint(set_2))#输出为False
    5. print(set_1.isdisjoint(set_3))#输出为True

  • 相关阅读:
    11.11一些资源整理和总结
    vue页面添加水印(可用于H5,APP)
    dumpsys meminfo 详解
    Windows server 安装和配置PostgreSQL 14
    Netty:入门(2)
    音视频编码格式-AAC ADT
    计算机毕设 opencv 图像识别 指纹识别 - python
    【设计模式】建造者模式
    【C语言基础】Chap. 1. 初识C语言
    SpringBoot | Spring Boot“整合Redis“
  • 原文地址:https://blog.csdn.net/qq_41872042/article/details/132706873