Set 是一個無序的集合類型。它可以遍歷,修改,沒有重複的元素。支持數學集合的一些操作,例如交集,並集,差集,補集。
創建集合
使用花括號 {} 或者 set() 函數創建集合。注意,創建一個空的集合只能用 set(),因為 {} 創建的是一個空字典。
創建了一個 basket 集合,可以發現,裡面相同的元素不會重複出現,最終 basket 只有4個元素。
可以用 e in s 判斷元素 e 是否存在集合 s 中。
set() 函數創建集合:
集合的操作
add(x) 方法,如果元素 x 不存在集合中,則添加。這個函數修改了原來的集合。
union(s) 方法,計算並集,也可以用 | 操作符。它不會修改原來的集合,而是返回新的集合。
intersection(s) 方法,計算交集,也可以用 & 操作符。它不會修改原來的集合,而是返回新的集合。
difference(s) 方法,計算差集,也可以用 - 操作符。它不會修改原來的集合,而是返回新的集合。
clear() 方法,清空集合。
symmetric_difference(s) 方法,也可以用 ^ 操作符。返回不同時在兩個集合的元素。它不會修改原來的集合,而是返回新的集合。
update(s) 方法,更新集合。會修改原來的集合。
union(s)、intersection(s)、difference(s)、symmetric_difference(s) 都不會修改原來的集合。如果你想要修改原來的集合,需要用另外4個方法 update、intersection_update、difference_update、symmetric_difference_update。
issubset(s) 方法,判斷是否是另一個集合的子集。也可以用操作符 <=
集合 a 裡面的元素都在集合 b 存在,所以 a 是 b 的子集。
issuperset(s) 方法,判斷是否是另一個集合的超集。也可以用操作符 >=。
可以用 for e in s 語法迭代集合。
frozenset
還有一個集合用 frozenset() 函數聲明,它是不可更改的,一旦聲明,就不可以修改了。
它和普通集合有一些共同的操作,例如:
key in s # 判斷 key 是否存在集合中
key not in s # 判斷 key 不在集合中
s1 == s2 # s1 和 s2 是否相等
s1 != s2 # s1 和 s2 不等
s1 <= s2 # s1 是 s2 的子集
s1 < s2 # s1 是 s2 的真子集
s1 >= s2 # s1 是 s2 的超集
s1 > s2 # s1 是 s2 的超集,兩者不可以相等
s1 | s2 # 並集
s1 & s2 # 交集
s1 – s2 # 差集
s1 ˆ s2 # 不同在 s1 和 s2 中的元素
閱讀更多 趣喜歡編程 的文章