您现在的位置是:群英 > 开发技术 > Python语言
python中怎样创建集合,集合的运算有哪些?
Admin发表于 2021-12-03 17:37:591639 次浏览

    这篇文章给大家分享的是python集合的内容。下文将介绍集合的概念、创建集合、集合的运算、集合的方法、不可变集合等等。文中介绍的非常详细,感兴趣的朋友接下来一起跟随小编看看吧。

    1、集合

        Python中的集合和数学上的集合基本是没有区别的,是无序的,即不可以使用索引访问的,集合中是不能出现重复元素的。

    2、创建集合

        在Python中创建集合使用花括号{}字面量的方式,或者使用set()来创建一个集合。使用{}中必须至少含一个元素,创建空集合不能使用{},这样创建的是空字典,应该使用set()的方式来创建一个集合。

    # 使用字面量方法创建集合
    set1 = {"Hello", "World"}
    print(type(set1), set1)  # <class 'set'> {'World', 'Hello'}
    # print(set1[1]) # TypeError: 'set' object does not support indexing
    
    # 使用set()的方式创建
    set2 = set("hello")  # {'l', 'o', 'h', 'e'}集合会去掉重复的元素,即"l"
    print(set2)
    
    # 创建空集合
    set3 = {}
    set4 = set()
    print(type(set3), type(set4))  # <class 'dict'>字典 <class 'set'>
    
    list1 = [1, 2, 3, 4, 3, 5, 1, 3]
    # 将列表转换为集合
    set6 = set(list1)
    print(type(set6), set6)  # <class 'set'> {1, 2, 3, 4, 5}
    
    # 使用生成列生成列表
    set5 = {num for num in range(20) if num % 3 == 0}
    print(set5)  # {0, 3, 6, 9, 12, 15, 18}
    
    # 遍历循环
    for ch in set5:
        print(ch)
    
    

    注意:集合中的元素为不可变的类型,如整数、浮点、字符串、元组等,也就是说可变类型不能作为元组的元素,集合本身也是可变类型,所以集合不能够作为集合中的元素。

    3、集合的运算

    集合数据类型拥有超多的运算符,包括成员运算、交集运算、并集运算、差集运算、比较运算(相等性、子集、超集)等。

    3.1 成员运算

        可以通过成员运算innot in 检查元素是否在集合中,

    示例代码如下:

    set1 = {"你好", "Python", "这个是", "集合", "set"}
    print("Python" in set1)  # True
    print("您好" in set1)  # False
    print("set" not in set1)  # False
    print("list" not in set1)  # True
    
    

    3.2 交并差运算

        Python中的集合跟数学上的集合一样,可以进行交集、并集、差集等运算,而且可以通过运算符和方法调用两种方式来进行操作。

        示例代码如下:

        set1 = {1, 2, 3, 4, 5, 6, 7}
        set2 = {2, 4, 6, 8, 10}

    # 交集(咱俩都有的)
    # 方法一: 使用 & 运算符
    print(set1 & set2)                # {2, 4, 6}
    # 方法二: 使用intersection方法
    print(set1.intersection(set2))    # {2, 4, 6}
    
    # 并集(咱俩加在一起)
    # 方法一: 使用 | 运算符
    print(set1 | set2)         # {1, 2, 3, 4, 5, 6, 7, 8, 10}
    # 方法二: 使用union方法
    print(set1.union(set2))    # {1, 2, 3, 4, 5, 6, 7, 8, 10}
    
    # 差集(我不要你有的)
    # 方法一: 使用 - 运算符
    print(set1 - set2)              # {1, 3, 5, 7}
    # 方法二: 使用difference方法
    print(set1.difference(set2))    # {1, 3, 5, 7}
    
    # 对称差(咱俩不要你的和我的,只要专一的)
    # 方法一: 使用 ^ 运算符
    print(set1 ^ set2)                        # {1, 3, 5, 7, 8, 10}
    # 方法二: 使用symmetric_difference方法
    print(set1.symmetric_difference(set2))    # {1, 3, 5, 7, 8, 10}
    # 方法三: 对称差相当于两个集合的并集减去交集
    print((set1 | set2) - (set1 & set2))      # {1, 3, 5, 7, 8, 10}
    
    

        集合的交集、并集、差集运算还可以跟赋值运算一起构成复合运算,

        示例代码如下:

    set1 = {1, 3, 5, 7}
    set2 = {2, 4, 6}
    # 将set1和set2求并集再赋值给set1
    # 也可以通过set1.update(set2)来实现
    set1 |= set2  # set1 = set1 | set2
    print(set1)    # {1, 2, 3, 4, 5, 6, 7}
    set3 = {3, 6, 9}
    # 将set1和set3求交集再赋值给set1
    # 也可以通过set1.intersection_update(set3)来实现
    set1 &= set3  # set1 = set1 & set3
    print(set1)    # {3, 6}
    
    

    3.3 比较运算

        两个集合可以用==和!=进行相等性判断,如果两个集合中的元素完全相同,那么==比较的结果就是True,否则就是False;!=则反之。

        如果集合A的所有的元素也是集合B的元素,就称为A是B的子集,B是A的超集;如果集合A的子级且不等于集合B,那就称为A是B的真子级。判断子集和超集的运算符为<和>。示例代码↓

    set1 = {1, 3, 5}
    set2 = {1, 2, 3, 4, 5}
    set3 = set2
    # <运算符表示真子集,<=运算符表示子集
    print(set1 < set2, set1 <= set2)    # True True
    print(set2 < set3, set2 <= set3)    # False True
    # 通过issubset方法也能进行子集判断
    print(set1.issubset(set2))      # True
    print(set2.issubset(set2))      # True
    # issubset方法和<=运算符是等价的
    
    # 反过来可以用issuperset或>运算符进行超集判断
    print(set2.issuperset(set1))    # True
    print(set2 > set1)              # True
    
    

    4、集合的方法

        集合属于可变列类型,可以通过集合类型的方法对集合的元素进行修改,

        示例代码:

    # 创建一个空集合
    set1 = set()
    
    # 通过add()方法为集合添加元素
    set1.add(1)
    set1.add(2)
    print(set1)  # {1, 2}
    
    # 通过update()给集合添加元素
    set1.update({1, 2, 3, 4, 5})
    print(set1)  # {1, 2, 3, 4, 5} 元素在集合中已存在,该元素只会出现一次
    
    # 通过discard()方法删除指定元素
    set1.discard(4)
    set1.discard(2)
    set1.discard(22)  # 集合里面没有不会出错
    print(set1)  # {1, 3, 5}
    
    # 通过remove()方法删除指定元素
    # set1.remove(6) # KeyError: 6,使用remove()方法删除指定元素时先做成员运算就不会出错了
    if 6 in set1:
        set1.remove(6)
    
    # pop方法可以从集合中随机删除一个元素并返回该元素
    print(set1.pop())  # 1 本次剔除的是1
    
    # clear方法可以清空整个集合
    set1.clear()
    print(type(set1))  # <class 'set'>
    print(set1)    # set()
    
    # 通过isdisjoint()方法判断两个集合有没有重复的元素,有返回False没有则返回Ture
    set2 = {"Hello", "World"}
    set3 = {"Hello", "一碗周"}
    set4 = {"Hi", "Python"}
    print(set2.isdisjoint(set3))  # False
    print(set2.isdisjoint(set4))  # True
    
    

    5、不可变集合

        Python中还有一种不可变类型的集合,名字叫frozenset,于集合的区别就跟列表和元组的区别一样。除了不能添加和删除元素,frozenset在其他方面跟set基本是一样的。

        示例代码:

    set1 = frozenset({1, 3, 5, 7})
    set2 = frozenset(range(1, 6))
    print(set1 & set2)    # frozenset({1, 3, 5})
    print(set1 | set2)    # frozenset({1, 2, 3, 4, 5, 7})
    print(set1 - set2)    # frozenset({7})
    print(set1 < set2)    # False
    

        关于python集合的内容就介绍到这,上述示例具有一定的借鉴价值,感兴趣的朋友可以参考,希望能对大家有帮助,想要了解更多大家可以关注其它的相关文章。

    文本转载自脚本之家

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

    标签: python集合
    相关信息推荐
    2021-11-01 17:56:43 
    摘要:这篇文章给大家分享的是PHP的弱引用的相关内容,一些朋友可能对于弱引用是什么不是很了解,对此本文就给大家讲讲是什么弱引用,文中示例代码介绍的非常详细,感兴趣的朋友接下来跟随小编一起学习一下吧。
    2022-05-13 17:51:19 
    摘要:在php中,explode的意思为“字符串转数组”,用于将一个字符串根据分隔符拆分为若干个子串,然后将这些子串组合成数组并返回,语法“explode(分隔字符,字符串,元素数目)”;该函数的第三个参数可以省略,用于规定要返回数组元素的数目。
    2022-08-19 17:50:28 
    摘要:信号处理免不了要求频率、画频谱图,但Matlab的fft()函数与Python的numpy.fft.fft()与scipy.fftpack.fft()函数得到的是fft变化后的双边复数值,离画频谱图还有几句代码的距离。基本原理不介绍了,下面直接懒人投喂,给出Matlab与Python的两个函数,直接调用即可画频谱图
    云活动
    推荐内容
    热门关键词
    热门信息
    群英网络助力开启安全的云计算之旅
    立即注册,领取新人大礼包
    • 联系我们
    • 24小时售后:4006784567
    • 24小时TEL :0668-2555666
    • 售前咨询TEL:400-678-4567

    • 官方微信

      官方微信
    Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
    增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
    免费拨打  400-678-4567
    免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
    微信公众号
    返回顶部
    返回顶部 返回顶部