Python 集合型別
集合基本上是不同散列表物件的無序集合。我們可以使用集合進行一些數學運算,例如集合並集、交集、差集等。我們還可以使用集合從集合中刪除重複項。
集合不記錄元素位置。它不支援索引、切片或其他與序列相關的操作。
在 Python 中,基本上有兩種型別的集合。set 和 frozenset。set 型別是可變的,而 frozenset 是不可變的。我們可以在 set 上執行 add()、remove() 和此類操作,但 frozenset 不允許。
一些與集合相關的函式和操作如下所示:
方法 len(s)
len() 方法返回集合中元素的數量。
操作 (x in s) 或 (y not in s)
in 和 not in 操作用於檢查元素是否屬於集合。在第一個語句 (x in s) 中,當值 x 在集合 s 中時,它將返回 True。第二個 (y not in s) 將返回 True,當元素 y 不存在於集合中時。
方法 isdisjoint(other_set)
此方法將檢查 other_set 是否與當前集合不相交。如果兩者至少有一個元素相同,則該方法將返回 False。
方法 issuperset(other_set)
當 other_set 集合中的所有元素也存在於當前集合中時,此函式返回 True。它基本上檢查當前集合是否為 other_set 的超集。
方法 union(other_set)
union() 函式透過收集當前集合和 other_set 中的所有元素來返回一個新集合。
方法 intersection(other_set)
intersection() 函式透過收集當前集合和 other_set 中的公共元素來返回一個新集合。
方法 difference(other_set)
difference() 方法將返回一個集合,其中最終集合包含第一個集合中的所有元素,除了這兩個集合的公共元素。
方法 add(elem)
將元素 elem 新增到集合中。
方法 discard(elem)
從集合中刪除元素 elem。當 elem 存在於集合中時,這將起作用。還有另一種稱為 remove() 的方法。在 remove() 中,如果專案不存在於集合中,它將引發 KeyError。
示例程式碼
mySet1 = {1, 2, 5, 6} mySet2 = {8, 5, 3, 4} mySet3 = set(range(15)) # all elements from 0 to 14 in the set mySet4 = {10, 20, 30, 40} print(set(mySet1.union(mySet2))) print(set(mySet1.intersection(mySet2))) print(set(mySet1.difference(mySet2))) print(mySet3.issuperset(mySet1)) print(mySet1.isdisjoint(mySet4)) mySet4.add(45) print(mySet4) mySet4.discard(40) print(mySet4)
輸出
set([1, 2, 3, 4, 5, 6, 8]) set([5]) set([1, 2, 6]) True True set([40, 10, 20, 45, 30]) set([10, 20, 45, 30])