• Python基础数据类型之集合


    Python基础数据类型之集合

    集合(set)是Python基本数据类型之一,它具有天生的去重能力,即集合中的元素不能重复。集合也是无序的,且集合中的元素必须是不可变类型。

    一、如何创建一个集合
    #1.用花括号{}将一堆没有映射关系的数据包裹起来,数据之间用逗号隔开就构成了集合,这里要和字典区别开,字典的元素有映射关系。
    >>> set1 = {1,2,3,4}
    >>> set1
    {1, 2, 3, 4}
    >>> type(set1)
    <class 'set'>
    >>>
    #2.用set()函数将一个可迭代序列转换成集合
    >>> set2 = set([1,1,3,3,4,4,4])
    >>> set2
    {1, 3, 4}           # 集合会自动去除重复元素
    >>> type(set2)
    <class 'set'>
    >>> set3 = set('Keys')
    >>> set3
    {'K', 'y', 'e', 's'}    #从这里可以看出集合是无序的
    >>>
    二、访问集合
    由于集合是无序的,所以不能用索引来访问,如果要访问集合里的元素,可以有下面的方法

    #1.利用for循环遍历集合
    >>> for i in set1:
    ...     print(i)
    ...
    1
    2
    3
    4
    >>>
    #2.利用in和 not in判断一个元素是否在集合中
    >>> 1 in set1
    True
    >>> 5 in set1
    False
    >>>
    三、不可变集合
    Python中有一个frozenset()函数,可以将集合“冻起来”,即将集合变成不可变集合
    >>> set1 = frozenset(set1)
    >>> set1.add(5)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    AttributeError: 'frozenset' object has no attribute 'add'
    >>>
    四、集合的方法
    1.add()
    向集合添加一个元素
    >>> set1 = {1,2,3}
    >>> set1
    {1, 2, 3}
    >>> set1.add(4)
    >>> set1
    {1, 2, 3, 4}
    >>>
    2.clear()
    清空集合里的元素
    >>> set1 = {1,2,3,4}
    >>> set1
    {1, 2, 3, 4}
    >>> set1.clear()
    >>> set1
    set()
    >>>
    3.copy()
    浅copy一个集合
    >>> set1 = {1,2,3}
    >>> set2 = set1.copy()
    >>> set1
    {1, 2, 3}
    >>> set2
    {1, 2, 3}
    >>>
    4.difference()
    差集
    >>> set1 = {1,2,3}
    >>> set2 = {2,3,4}
    >>> set1.difference(set2)
    {1}
    >>> set2.difference(set1)
    {4}
    >>>
    5.difference_update()
    差集更新:即将两个集合的差集赋给第一个集合
    >>> set1 = {1,2,3}
    >>> set2 = {2,3,4}
    >>> set1.difference_update(set2)
    >>> set1
    {1}
    >>>
    6.discard()
    删除集合中的元素,如果元素不存在,则什么也不做,如果元素存在,就删除它
    >>> set1 = {1,2,3}
    >>> set1.discard(1)
    >>> set1
    {2, 3}
    >>> set1.discard(4)
    >>> set1
    {2, 3}
    >>>
    7.intersection()
    取交集:即两个集合都有的元素
    >>> set1 = {1,2,3}
    >>> set2 = {2,3,4}
    >>> set1.intersection(set2)
    {2, 3}
    >>> set2.intersection(set1)
    {2, 3}
    >>>
    8.intersection_update()
    交集更新:即将两个集合的交集赋给第一个集合
    >>> set1 = {1,2,3}
    >>> set2 = {2,3,4}
    >>> set1.intersection_update(set2)
    >>> set1
    {2, 3}
    >>>
    9.isdisjoint()
    判断两个集合是否有空交集,如果两个集合有一个空交集,返回 True,否则返回False
    >>> set1 = {1,2,3}
    >>> set2 = {2,3,4}
    >>> set3 = {5,6}
    >>> set1.isdisjoint(set2)
    False
    >>> set1.isdisjoint(set3)
    True
    >>>
    10.issubset()
    判断set1是不是set2的子集
    >>> set1 = {1,2,3}
    >>> set2 = {1,2,3,4}
    >>> set3 = {2,3,4}
    >>> set1.issubset(set2)
    True
    >>> set1.issubset(set3)
    False
    >>>
    11.issuperset()
    判断set1是不是set2的父集
    >>> set1 = {1,2,3}
    >>> set2 = {1,2,3,4}
    >>> set3 = {2,3,4}
    >>> set2.issuperset(set1)
    True
    >>> set2.issuperset(set2)   # 一个集合即是其本身的父集,也是其本身的子集
    True
    >>>
    12.pop()
    随机弹出集合里的某个元素
    >>> set1 = {1,2,3}
    >>> set1.pop()
    1
    >>> set1.pop()
    2
    >>> set1
    {3}
    >>>
    13.remove(x)
    移除集合元素x
    >>> set1 = {1,2,3}
    >>> set1.remove(2)
    >>> set1
    {1, 3}
    >>>
    14.symmetric_difference()
    对称差集:返回两个集合中相互都没有的元素组成的集合
    >>> set1 = {1,2,3}
    >>> set2 = {2,3,4}
    >>> set1.symmetric_difference(set2)
    {1, 4}
    15.symmetric_difference_update()
    对称差集更新:即将两个集合的对称差集的结果赋给第一个集合
    >>> set1 = {1,2,3}
    >>> set2 = {2,3,4}
    >>> set1.symmetric_difference_update(set2)
    >>> set1
    {1, 4}
    16.union()
    取并集:返回两个集合中所有元素
    >>> set1 = {1,2,3}
    >>> set2 = {2,3,4}
    >>> set2.difference(set1)
    {4}
    >>> set1.union(set2)
    {1, 2, 3, 4}
    >>> set2.union(set1)
    {1, 2, 3, 4}
    >>>
    17.update()
    更新集合
    >>> set1 = {1,2,3}
    >>> set1.update([4,5])
    >>> set1
    {1, 2, 3, 4, 5}
    >>>
    五、集合内容补充

    除了用集合的方法来操作集合,还可以用操作符,其对应关系如下:
    操作符     含义      使用方法      等价于

    < 子集 set1<set2 issubset()
    | 并集 set1|set2 union()
    & 交集 set1&set2 intersection()
    - 差集 set1-set2 difference()
    ^ 对称差集 set1^set2 symmetric_difference()
  • 相关阅读:
    LeetCode 31 Next Permutation / 60 Permutation Sequence [Permutation]
    LeetCode 15 3Sum [sort] <c++>
    LeetCode 81 Search in Rotated Sorted Array II [binary search] <c++>
    LeetCode 33 Search in Rotated Sorted Array [binary search] <c++>
    LeetCode 80 Remove Duplicates from Sorted Array II [Array/auto] <c++>
    将博客搬至CSDN
    leetcode
    (转载) 图像领域常用资源
    Unity3D 之 C# 脚本
    Kinect 人机交互开发实践
  • 原文地址:https://www.cnblogs.com/Keys819/p/9338297.html
Copyright © 2020-2023  润新知