使用 Methods 和 Builtins 設定操作

我們定義了兩組 ab

>>> a = {1, 2, 2, 3, 4}
>>> b = {3, 3, 4, 4, 5}

注意:{1} 會建立一個元素集,但 {} 會建立一個空的 dict。建立空集的正確方法是 set()

路口

a.intersection(b) 返回一個新的集合,其中包含 ab 中的元素

>>> a.intersection(b)
{3, 4}

聯合

a.union(b) 返回一個新集合,其中包含 ab 中的元素

>>> a.union(b)
{1, 2, 3, 4, 5}

區別

a.difference(b) 返回一個新集合,其中元素存在於 a 中但不在 b

>>> a.difference(b)
{1, 2}
>>> b.difference(a)
{5}

對稱差異

a.symmetric_difference(b) 返回一個新的集合,其元素存在於 ab 中,但不存在於兩者中

>>> a.symmetric_difference(b)
{1, 2, 5}
>>> b.symmetric_difference(a)
{1, 2, 5}

注意a.symmetric_difference(b) == b.symmetric_difference(a)

子集和超集

c.issubset(a) 測試 c 的每個元素是否在 a

a.issuperset(c) 測試 c 的每個元素是否都在 a

>>> c = {1, 2}
>>> c.issubset(a)
True
>>> a.issuperset(c)
True

後面的操作具有等效的運算子,如下所示:

方法 操作者
a.intersection(b) a & b
a.union(b) a
a.difference(b) a - b
a.symmetric_difference(b) a ^ b
a.issubset(b) a <= b
a.issuperset(b) a >= b

不相交的集合

如果 a 中的元素也不在 d 中,則 ad 是不相交的,反之亦然。

>>> d = {5, 6}
>>> a.isdisjoint(b) # {2, 3, 4} are in both sets
False
>>> a.isdisjoint(d)
True

# This is an equivalent check, but less efficient
>>> len(a & d) == 0
True

# This is even less efficient
>>> a & d == set()
True

測試會員資格

內建的 in 關鍵字搜尋出現

>>> 1 in a
True
>>> 6 in a
False

長度

內建的 len() 函式返回集合中的元素數

>>> len(a)
4
>>> len(b)
3