集合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'})
