Python3学习之路~2.6 集合操作

时间:2022-02-01 00:02:21

集合是一个无序的,不重复的数据组合,它的主要作用如下:

  • 去重,把一个列表变成集合,就自动去重了
  • 关系测试,测试两组数据之前的交集、差集、并集等关系

常用操作

Python3学习之路~2.6 集合操作Python3学习之路~2.6 集合操作
>>> list1 = [1,4,5,7,3,6,7,9]
>>> list1=set(list1) # 将list变为set,自动去重
>>> print(list1,type(list1))
{1, 3, 4, 5, 6, 7, 9} <class 'set'>

>>> s = set([3,5,9,10])    #创建一个数值集合
>>> t = set("Hello")       #创建一个唯一字符的集合
>>> 
>>> t.add('x') # 添加一项 
>>> print(t)
{'o', 'x', 'e', 'l', 'H'}

>>> s.update([10,37,42]) # 在s中添加多项
>>> print(s)
{3, 37, 5, 9, 10, 42}

>>> t.remove('H') # 使用remove()可以删除一项
>>> print(t)
{'o', 'x', 'e', 'l'}

>>> t.pop() # 随机删除,必须无参
'o'
>>> print(t)
{'x', 'e', 'l'}

>>> t.discard('e') # 使用discard()删除
>>> print(t)
{'x', 'l'}

>>> len(s) # set的长度
6

>>> x in s # 测试x是否是s的成员  
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'x' is not defined

>>> x not in s # 测试x是否不是s的成员  
True

>>> print(s)
{3, 37, 5, 9, 10, 42}
>>> y=set([3,5,9,8,4])
>>>
>>> s<=y
False
>>> s.issubset(y) # 同s<=y,测试是否s中的每一个元素都在y中 
False

>>> s>=y
False
>>> s.issuperset(y) # 同s>=y,测试是否y中的每一个元素都在s中   
False

>>> s&y
{9, 3, 5}
>>> s.intersection(y) # 同s&y,交集,返回一个新的set包含s和y中的公共元素 
{9, 3, 5}

>>> s|y
{3, 4, 37, 5, 8, 9, 42, 10}
>>> s.union(y) # 同s|y,并集,返回一个新的set包含s和y中的每一个元素
{3, 4, 37, 5, 8, 9, 42, 10}

>>> s-y 
{10, 42, 37}
>>> s.difference(y) # 同s-y,差集(项在s中,但不在y中),返回一个新的set包含s中有但是y中没有的元素
{10, 42, 37}

>>> s^y
{4, 42, 37, 8, 10}
>>> s.symmetric_difference(y) # 同s^y,对称差集(项在y或s中,但不会同时出现在二者中),返回一个新的set包含s和y中不重复的元素  
{4, 42, 37, 8, 10}

>>> s.copy() #返回 set “s”的一个浅复制
{3, 42, 37, 5, 9, 10}
View Code