設定

回報問題 查看原始碼 Nightly · 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

Experimental。這個 API 仍在實驗階段,可能隨時變更。請勿依賴這項功能。您可以設定 --experimental_enable_starlark_set,將其啟用為實驗功能。

內建可變動的集合類型。範例集合運算式:

x = set()           # x is an empty set
y = set([1, 2, 3])  # y is a set with 3 elements
3 in y              # True
0 in y              # False
len(x)              # 0
len(y)              # 3

在布林值情境中使用的集合,只有在非空時才會設為 true。

s = set()
"non-empty" if s else "empty"  # "empty"
t = set(["x", "y"])
"non-empty" if t else "empty"  # "non-empty"

集合的元素必須可進行雜湊運算;只有在 x 可用於字典的鍵時,x 才可做為集合的元素。

集合本身無法進行雜湊運算,因此您無法讓集合以另一個集合做為元素。

您無法依索引存取集合的元素,但可以對其進行疊代,並使用 list() 內建函式,依疊代順序取得集合元素的清單。就像清單一樣,在疊代時變異集合也是錯誤。迭代順序與插入順序相符:

s = set([3, 1, 3])
s.add(2)
# prints 3, 1, 2
for item in s:
    print(item)
list(s)  # [3, 1, 2]

只有當 t 是包含相同元素的集合 (可能具有不同的疊代順序) 時,集合 s 才等於 t。具體來說,集合 not 等同於其元素清單。

集合並未排序;<<=>>= 運算並未針對集合定義,且無法為集合清單排序,這與 Python 不同。

對兩個集合執行 | 運算會傳回兩個集合的並集:包含在原始集合中找到的元素的集合。| 運算有擴充指派版本;s |= t 會將 t 的所有元素新增至 s

set([1, 2]) | set([3, 2])  # set([1, 2, 3])
s = set([1, 2])
s |= set([2, 3, 4])        # s now equals set([1, 2, 3, 4])

對兩個集合執行 & 運算會傳回兩個集合的交集:一個集合,只包含在兩個原始集合中找到的元素。& 運算有擴充指派版本;s &= t 會從 s 移除 t 中找不到的所有元素。

set([1, 2]) & set([2, 3])  # set([2])
set([1, 2]) & set([3, 4])  # set()
s = set([1, 2])
s &= set([0, 1])           # s now equals set([1])

對兩個集合執行 - 運算會傳回兩個集合的差異:包含左側集合中元素,但不包含右側集合元素的集合。- 運算有擴充指派版本;s -= t 會從 s 移除 t 中找到的所有元素。

set([1, 2]) - set([2, 3])  # set([1])
set([1, 2]) - set([3, 4])  # set([1, 2])
s = set([1, 2])
s -= set([0, 1])           # s now equals set([2])

對兩個集合執行 ^ 運算會傳回兩個集合的對稱差異:包含兩個原始集合中任一集合中找到的元素,但兩個集合中都沒有。^ 作業有擴充指派版本;s ^= t 會從 s 移除 s 中找到的任何 t 元素,並將 s 中找不到的任何 t 元素新增至 s

set([1, 2]) ^ set([2, 3])  # set([1, 3])
set([1, 2]) ^ set([3, 4])  # set([1, 2, 3, 4])
s = set([1, 2])
s ^= set([0, 1])           # s now equals set([2, 0])

成員

add

None set.add(element)

將元素新增至集合。

參數

參數 說明
element required
要新增的元素。

關閉

None set.clear()

移除集合的所有元素。

差異

set set.difference(*others)

傳回新的可變更集合,其中包含此集合與其他集合的差異。

例如:

set([1, 2, 3]).intersection([1, 2], [2, 3]) == set([2])

參數

參數 說明
others 必要
Set、序列或字典。

difference_update

None set.difference_update(*others)

從這個集合中移除其他集合中的任何元素。

例如:

x = set([1, 2, 3, 4])
x.difference_update([2, 3], [3, 4])
# x is now set([1])

參數

參數 說明
others 必要
Set、序列或字典。

捨棄

None set.discard(element)

從集合中移除元素 (如果有)。

參數

參數 說明
element 必要
要捨棄的元素。

交集

set set.intersection(*others)

傳回新的可變動集合,其中包含此集合與其他集合的交集。

例如:

set([1, 2, 3]).intersection([1, 2], [2, 3]) == set([2])

參數

參數 說明
others 必要
Set、序列或字典。

intersection_update

None set.intersection_update(*others)

從這個集合中移除所有其他集合中找不到的元素。

例如:

x = set([1, 2, 3, 4])
x.intersection_update([2, 3], [3, 4])
# x is now set([3])

參數

參數 說明
others 必要
Set、序列或字典。

isdisjoint

bool set.isdisjoint(other)

如果此組合與其他組合沒有共同元素,則傳回「是」。

例如:

set([1, 2]).isdisjoint([3, 4]) == True
set().isdisjoint(set()) == True
set([1, 2]).isdisjoint([2, 3]) == False

參數

參數 說明
other 必要
Set、序列或字典。

issubset

bool set.issubset(other)

如果此集合是另一個集合的子集,則傳回 true。

例如:

set([1, 2]).issubset([1, 2, 3]) == True
set([1, 2]).issubset([1, 2]) == True
set([1, 2]).issubset([2, 3]) == False

參數

參數 說明
other 必要
Set、序列或字典。

issuperset

bool set.issuperset(other)

如果此集合是另一個集合的超集,則傳回「是」。

例如:

set([1, 2, 3]).issuperset([1, 2]) == True
set([1, 2, 3]).issuperset([1, 2, 3]) == True
set([1, 2, 3]).issuperset([2, 3, 4]) == False

參數

參數 說明
other 必要
Set、序列或字典。

流行

unknown set.pop()

移除並傳回集合的首個元素。如果集合為空白,則會失敗。

移除

None set.remove(element)

從集合中移除元素,該元素必須存在於集合中。如果集合中沒有該元素,則會失敗。

參數

參數 說明
element 必填
要移除的元素。

symmetric_difference

set set.symmetric_difference(other)

傳回新的可變動集合,其中包含此集合與其他集合、序列或字典的對稱差異。

例如:

set([1, 2, 3]).symmetric_difference([2, 3, 4]) == set([1, 4])

參數

參數 說明
other 必要
Set、序列或字典。

symmetric_difference_update

None set.symmetric_difference_update(other)

傳回新的可變動集合,其中包含此集合與其他集合、序列或字典的對稱差異。

例如:

set([1, 2, 3]).symmetric_difference([2, 3, 4]) == set([1, 4])

參數

參數 說明
other 必要
Set、序列或字典。

聯集

set set.union(*others)

傳回新的可變動集合,其中包含此集合與其他集合的聯集。

例如:

set([1, 2]).union([2, 3, 4], [4, 5]) == set([1, 2, 3, 4, 5])

參數

參數 說明
others 必要
Set、序列或字典。

update

None set.update(*others)

將其他集合中的元素新增至這個集合。

例如:

x = set([1, 2])
x.update([2, 3], [3, 4])
# x is now set([1, 2, 3, 4])

參數

參數 說明
others 必要
Set、序列或字典。