集合於不可變集合 |
一、集合
集合是一種無序的序列。集合中的元素具有唯一性,即集合中不存在兩個同樣的元素。
1.集合的格式
通常用一對大括號“{}”來創建集合:
s = {1,2,5}
也可以使用set()函數來生成:
s = set([1,3,2,1]) print(s) #結果為:{1,3,2}
2.集合的運算
(1)交集
兩個集合的交集可以用操作符" & "實現,也可以用.intersection()方法得到兩個集合的交集,返回兩個集合共有元素的集合。
a = {1,5,6,9} b = {1,4,6,8} s = a.intersection(b) v = a & b print(s) #結果為:{1, 6} print(v) #結果為:{1, 6}
(2)並集
兩個集合的並集可以用操作符" | "實現,也可以用.union()方法得到兩個集合的並集,返回兩個集合所有元素的集合
a = {1,5,6,9} b = {1,4,6,8} s = a.union(b) v = a | b print(s) #結果為:{1, 4, 5, 6, 8, 9} print(v) #結果為:{1, 4, 5, 6, 8, 9}
(3)差集
兩個集合的差集可以用操作符" - "實現,也可以用.difference()方法得到兩個集合的差集,返回在第一個集合而不在第二個集合的元素組成的集合。
a = {1,5,6,9} b = {1,4,6,8} s = a.difference(b) v = b - a print(s) #結果為:{5,9} print(v) #結果為:{4,8}
(4)交叉補集
兩個集合的差集可以用操作符" ^ "實現,也可以用.symmetric_difference()方法得到兩個集合的交叉補集,返回兩個集合並集與交集的差。
a = {1,5,6,9} b = {1,4,6,8} s = a.symmetric_difference(b) v = b ^ a print(s) #結果為:{4, 5, 8, 9} print(v) #結果為:{4, 5, 8, 9}
3.集合的包含關系
(1)子集
判斷子集關系可以用運算符" <= "實現,也可以用.issubset()方法來判斷是不是某個集合的子集。
a = {1,5,6,9} b = {1,6} print(b<=a) #結果為:True print(b.issubset(a)) #結果為:True
(2)父集
判斷父集關系可以用運算符" >= "實現,也可以用.issuperset()方法來判斷是不是某個集合的父集。
a = {1,5,6,9} b = {1,6} print(a>=b) #結果為:True print(a.issuperset(b)) #結果為:True
4.集合的方法
(1).add()方法
.add()方法就是添加單個元素。
b = {1,6} b.add(5) print(b) #結果為:{1,5,6}
(2).update()方法
.update()方法用來向集合添加多個元素,接受一個序列作為參數。
b = {1,6} b.update([1,5,7]) print(b) #結果為:{1, 5, 6, 7}
(3).remove()方法
.remove()方法可以從集合中移除單個指定元素,元素不存在會報錯。
b = {1,6,5} b.remove(5) print(b) #結果為:{1,6}
(4).pop方法
.pop方法隨機地從集合中刪除並返回一個元素。
b = {1,6,5,'alex'} v = b.pop() print(b) #返回刪除元素的集合 print(v) #隨機被刪除的元素
(5).discard()方法
.discard()方法作用跟.remove()方法一樣,區別在於刪除不存在元素不會報錯。
b = {1,6,5,'alex'} b.discard(3) print(b) #結果為:{1, 'alex', 5, 6}
5.判斷從屬關系
b = {1,6,5,'alex'} s = 5 in b print(s) #結果為:True
二、不可變集合
不可變集合是一種不可變類型,一旦創建就不能改變,其構建方法如下:
s = frozenset([1,6,'alex',1]) print(s) #結果為:frozenset({1, 'alex', 6})
PS:以上代碼得到的結果集合是可變的,不是唯一值。