集合set(可变的数据类型):
数据结构以大括号{}表示,各元素逗号隔开,例:{1,2,3,4}。
集合特征:无序,元素不重复
创建集合:
s={1,2,3} pirnt(s) #--------------- {1,2,3} s=set('hello') print(s) #--------------- {'e', 'h', 'o', 'l'}
- set.add()
添加元素:
s=('abc') s.add('d') print(s) #--------------- {'c', 'd', 'a', 'b'}
- set.clear()
清空集合元素:
s=set('abc') s.clear() print(s) #------------------ {}
- set.copy()
集合的拷贝(浅拷贝):
s=set('abc') s2=s.copy() print(s2) #------------------- {{'c', 'a', 'b'}}
- set.pop()
随机删除某一集合元素,并返回被删的元素值:
s=set('abc') s.pop() print(s) #---------------------- {'a', 'b'}
- set.remove()
删除指定的元素(元素不存在会报错):
s=set('abc') s.remove('b') print(s) #-------------------- {'c', 'a'}
- set.discard()
删除指定元素(元素不存在不报错):
s=set('abc') s.discard('b') print(s) #-------------------- {'c', 'a'}
- 求交集(两集合中共有的元素):
s1=set('abc') s2=set('abdef') print(s1&s2)#使用&求交集 print(s1.intersection(s2))#使用集合的内置方法求交集 #------------------------------------ {'a', 'b'} {'a', 'b'}
- 求并集(两集合所有元素):
s1=set('abc') s2=set('abdef') print(s1|s2)#使用|求交集 print(s1.union(s2))#使用集合的内置方法求交集 #------------------------------------ {'c', 'b', 'd', 'a', 'e', 'f'} {'c', 'b', 'd', 'a', 'e', 'f'}
- 求差集(从一集合中减去另一集合存在的元素):
s1=set('abc') s2=set('abdef') print(s1-s2)#使用-求交集 print(s1.difference(s2))#使用集合的内置方法求交集 #------------------------------------ {'c'} {'c'}
- 求交叉补集(并集减交集):
s1=set('abc') s2=set('abdef') print(s1^s2)#使用^求交集 print(s1.symmetric_difference(s2))#使用集合的内置方法求交集 #------------------------------------ {'d', 'c', 'e', 'f'} {'d', 'c', 'e', 'f'}
- set.difference_update:
求差集并将结果更新到原集合中:
s1=set('abc') s2=set('abdef') s2.difference(s1)#使用集合的内置方法求交集 print(s2) #------------------------------------ {'f', 'e', 'd'}
- set.isdisjoint():
判断集合是否不相交:
s1=set('abc') s2=set('c') s3=set('abdef') print(s1.isdisjoint(s3)) print(s2.isdisjoint(s3)) #------------------------------- False True
- set.issubset():
判断该集合是否是另一集合的子集:
s1=set('abc') s2=set('abd') s3=set('abdef') print(s1.issubset(s3)) print(s2.issubset(s3)) #----------------------------------- False True
- set.issuperset():
判断该集合是否另一集合的父集:
s1=set('abc') s2=set('abd') s3=set('abdef') print(s3.issuperset(s1)) print(s3.issuperset(s2)) #----------------------------------- False True
- set.update():
将可迭代数据更新至集合中:
s1=set('abc') s2=set('def') s1.update(s2) #对比set.add(),add()只可添加一个元素,update()可添加多个元素 print(s1) #---------------------------- {'f', 'c', 'd', 'e', 'b', 'a'}
- s=frozenset():
可生成不可变集合:
s1=frozenset('abc') print(s1) #----------------------------- frozenset({'b', 'c', 'a'})