zoukankan      html  css  js  c++  java
  • Python集合

    集合(set)是一个无序的、元素不重复的序列,可以使用大括号 { } 或者 set() 函数创建集合,但是创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

    集合的几种操作

    1、集合的创建

    >>> set1 = set([1,4,7,5,6,8]) # 用set函数创建一个集合
    >>> set2 = {111, 222, 333, 444} # 用{}创建一个集合
    >>> set4 = set() #创建一个空集合
    >>> set1
    {1, 4, 5, 6, 7, 8}
    >>> set2
    {444, 333, 222, 111}
    >>> set4
    set()

    2、添加元素

    格式:s.add(x)           

    将元素x加到集合s中,下面使用set方法进行集合元素的添加

    >>> set1
    {1, 4, 5, 6, 7, 8, 9999}
    >>> set1.add(999)
    >>> set1
    {1, 4, 5, 6, 7, 8, 999, 9999}
    >>> set4.add('baidu')
    >>> set4
    {'baidu'}
    >>>

    还有一种update方法也可以进行集合元素的添加,参数可以是列表,元组,字典等

    格式:s.update( x )

    >>> set1
    {1, 4, 5, 6, 7, 8, 999, 9999}
    >>> set1.update(['1','2'])
    >>> set1
    {1, 4, 5, 6, 7, 8, 999, 9999, '2', '1'}
    >>> set1.update({128})
    >>> set1
    {128, 1, 4, 5, 6, 7, 8, 999, 9999, '2', '1'}
    >>>

    可以看到update方法可以同时添加多个元素

    3、删除元素

    格式:s.remove( x ),当集合中不存在要删除的元素时,会出错

    >>> set2
    {444, 333, 222, 111}>>> set2.remove(111)
    >>> set2
    {444, 333, 222}
    >>> set4
    {'baidu'}
    >>> set4.remove('baidu')
    >>> set4
    set()
    >>> set4.remove(5)
    Traceback (most recent call last):
      File "<pyshell#92>", line 1, in <module>
        set4.remove(5)
    KeyError: 5
    >>> 

    此外还有一个方法也是移除集合中的元素,如果要删除的元素不存在,不会发生错误。

    格式:s.discard( x )

    >>> set1
    {128, 1, 4, 5, 6, 7, 8, 999, 9999, '2', '1'}
    >>> set1.discard('2')
    >>> set1
    {128, 1, 4, 5, 6, 7, 8, 999, 9999, '1'}
    >>> set1.discard(8888)
    >>> set1
    {128, 1, 4, 5, 6, 7, 8, 999, 9999, '1'}
    >>> 

    也可以随机地删除并返回一个集合元素

    格式:s.pop()

    >>> set1
    {128, 1, 4, 5, 6, 7, 8, 999, 9999, '1'}
    >>> set1.pop()
    128
    >>> 
    >>> set1
    {1, 4, 5, 6, 7, 8, 999, 9999, '1'}
    >>> set1.update({128})
    >>> set1
    {128, 1, 4, 5, 6, 7, 8, 999, 9999, '1'}
    >>> set1.pop()
    1
    >>> set1
    {128, 4, 5, 6, 7, 8, 999, 9999, '1'}
    >>> 

    4、统计元素个数

    格式:len(s)            计算集合 s 元素个数
    >>> set1
    {128, 4, 5, 6, 7, 8, 999, 9999, '1'}
    >>> len(set1)
    9
    >>> set2
    {444, 333, 222}
    >>> len(set2)
    3
    >>> set4
    set()
    >>> len(set4)
    0
    >>>

    5、清空集合

    >>> set2
    {444, 333, 222}
    >>> set2.clear()
    >>> set2
    set()
    >>> 

    6、判断元素是否在集合中存在

          格式: x in s    判断元素 x 是否在集合 s 中,存在返回 True,不存在返回 False

    • >>> set1
    • {128, 4, 5, 6, 7, 8, 999, 9999, '1'}
    • >>> 128 in set1
    • True
    • >>> '2' in set1
    • False
    • >>>

    7、集合之间的运算

    (1) 集合的交集

    >>> set2 =set([2,4,6,8,1,10])
    >>> set2
    {1, 2, 4, 6, 8, 10}
    >>> set1
    {128, 4, 5, 6, 7, 8, 999, 9999, '1'}
    >>> set1.intersection(set2)
    {8, 4, 6}
    >>> set1 & set2
    {8, 4, 6}
    >>> 

    (2) 集合的并集

    >>> set1
    {128, 4, 5, 6, 7, 8, 999, 9999, '1'}
    >>> set2
    {1, 2, 4, 6, 8, 10}
    >>> set1.union(set2)
    {128, 1, 2, 4, 5, 6, 7, 8, 999, 10, 9999, '1'}
    >>> set1 | set2
    {128, 1, 2, 4, 5, 6, 7, 8, 999, 10, 9999, '1'}
    >>> 

    (3)集合的差集

    >>> set1
    {128, 4, 5, 6, 7, 8, 999, 9999, '1'}
    >>> set2
    {1, 2, 4, 6, 8, 10}
    >>> set1-set2
    {128, 5, 999, 7, 9999, '1'}
    >>> set1.difference(set2)
    {128, 5, 999, 7, 9999, '1'}
    >>> set2-set1
    {1, 2, 10}
    >>> set2.difference(set1)
    {1, 2, 10}
    >>> 

    (4)判断是否是父集和子集的关系

    >>> set1
    {128, 4, 5, 6, 7, 8, 999, 9999, '1'}
    >>> set2
    {1, 2, 4, 6, 8, 10}
    >>> set3=set([1,2,4])
    >>> set3
    {1, 2, 4}
    >>> set1.issubset(set2)  #判断集合set1是否是set2的子集
    False
    >>> set1.issubset(set3)
    False
    >>> set2.issubset(set1)
    False
    >>> set2.issubset(set3)
    False
    >>> set3.issubset(set1)
    False
    >>> set3.issubset(set2) 
    True
    >>> set1.issuperset(set2) #判断集合set1是否是集合set2的父集
    False
    >>> set1.issuperset(set3)
    False
    >>> set2.issuperset(set1)
    False
    >>> set2.issuperset(set3)
    True
    >>> set3.issuperset(set1)
    False
    >>> set3.issuperset(set2)
    False
    >>> 
  • 相关阅读:
    html基础笔记
    webpack实用配置总结
    Vue生命周期
    Vue跨域解决方法
    日历
    绝对地址和相对地址
    HTML+CSS要点
    (利用DOM)在新打开的页面点击关闭当前浏览器窗口
    前端面试
    前端工程师的知识体系
  • 原文地址:https://www.cnblogs.com/ccdblogs/p/11370793.html
Copyright © 2011-2022 走看看