集合是一个无序的,不重复的数据组合,它的主要作用如下:
- 去重,把一个列表变成集合,就自动去重了
- 关系测试,测试两组数据之前的交集、差集、并集等关系
常用操作
>>> 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}