在 Python 中從集合中刪除元素

Muhammad Maisam Abbas 2023年1月30日
  1. 使用 Python 中的 remove() 函式從集合中刪除單個元素
  2. 使用 Python 中的 discard() 函式從集合中刪除單個元素
  3. 在 Python 中使用 - 運算子從集合中刪除多個元素
  4. 使用 Python 中的 difference() 函式從集合中刪除多個元素
  5. 使用 Python 中的 difference_update() 函式從集合中刪除多個元素
在 Python 中從集合中刪除元素

本教程將討論在 Python 中從集合中刪除元素的不同方法。

使用 Python 中的 remove() 函式從集合中刪除單個元素

Python 中的 set.remove() 函式 與集合一起使用以從呼叫集合中刪除特定元素。remove() 函式將要刪除的元素作為引數,並從呼叫集中刪除指定的元素。如果在呼叫集合中找不到該元素,remove() 函式會引發 KeyError 異常。請參考以下程式碼示例。

set1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}
set1.remove(5)
print(set1)

輸出:

{0, 1, 2, 3, 4, 6, 7, 8, 9}

我們使用上面程式碼中的 remove(5) 函式從 set1 中刪除了元素 5。呼叫集中不存在指定值的情況如下面的編碼示例所示。

set1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}
set1.remove(51)
print(set1)

輸出:

KeyError                                  Traceback (most recent call last)
<ipython-input-1-841e997b50f3> in <module>()
      1 #remove()
      2 set1 = {1,2,3,4,5,6,7,8,9,0}
----> 3 set1.remove(51)
      4 print(set1)

KeyError: 51

我們試圖從上面程式碼中的 set1 中刪除值 51。由於在 set1 中沒有值 51remove() 函式會引發 KeyError

使用 Python 中的 discard() 函式從集合中刪除單個元素

discard() 函式remove() 函式非常相似。它還可用於僅從 Python 中的集合中刪除單個元素。discard() 函式將要刪除的元素作為輸入引數,如果該值存在於該特定集合中,則將其從呼叫集合中刪除。唯一的區別是,如果呼叫集中不存在該值,則 discard() 函式不會引發 KeyError。以下程式碼片段向我們展示瞭如何使用 discard() 函式從集合中刪除單個元素。

set1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}
set1.discard(5)
print(set1)

輸出:

{0, 1, 2, 3, 4, 6, 7, 8, 9}

我們使用上面程式碼中的 discard() 函式從 set1 中刪除了值 5。如上所述,如果我們嘗試將一個值傳遞給 set1 中不存在的 discard() 函式,程式碼將成功執行,並且直譯器不會引發任何異常。下面的編碼示例演示了這種現象。

set1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}
set1.discard(51)
print(set1)

輸出:

{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

我們嘗試使用上面程式碼中的 discard() 函式從 set1 中刪除 51。程式碼執行成功,因為指定的值在 set1 中不存在,並且沒有元素從 set1 中刪除。

在 Python 中使用 - 運算子從集合中刪除多個元素

我們可以使用 - 運算子在 Python 中執行集差操作。- 運算子從左集合中刪除右集合的所有元素,並以另一個集合的形式返回結果。如果左集合的元素不存在於右集合中,則此方法不會引發任何異常,並返回右集合作為其結果。以下程式碼片段向我們展示瞭如何使用 - 運算子從集合中刪除多個元素。

set1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}
set2 = {2, 4, 6, 8, 0}
set1 = set1 - set2
print(set1)

輸出:

{1, 3, 5, 7, 9}

在上面的程式碼中,我們使用 - 運算子從 set1 中刪除了 set2 的所有元素,並將結果集儲存在 set3 中。以下程式碼示例演示了 set1set2 都具有唯一值的場景。

set1 = {1, 3, 5, 7, 9}
set2 = {2, 4, 6, 8, 0}
set1 = set1 - set2
print(set1)

輸出:

{1, 3, 5, 7, 9}

如前所述,如果左側集合中不存在右側集合的所有元素,則程式碼成功執行,- 運算子將左側集合作為結果集返回。

使用 Python 中的 difference() 函式從集合中刪除多個元素

在集合差中,我們從另一個集合中刪除一個集合的所有元素。在 Python 中,set.difference() 函式用於執行集差操作。這個 difference() 函式的工作原理與 - 運算子相同。它將要刪除的集合作為輸入引數,從呼叫集合中刪除其所有元素,並以另一個集合的形式返回結果。請參考以下程式碼片段。

set1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}
set2 = {2, 4, 6, 8, 0}
set1 = set1.difference(set2)
print(set1)

輸出:

{1, 3, 5, 7, 9}

我們使用 difference() 函式從 set1 中刪除了 set2 的所有元素,並將結果儲存在上述程式碼中的 set3 中。difference() 函式的場景,其中輸入集的所有值都不存在於呼叫集中,與 - 運算子相同。

使用 Python 中的 difference_update() 函式從集合中刪除多個元素

在前兩節中,我們討論瞭如何從一個集合中刪除多個元素,這兩種方法都涉及我們需要儲存結果的第三個集合。這種方法不需要新的集合來儲存結果。它更新我們的呼叫集並將結果儲存在呼叫集中。difference_update() 函式 將需要從呼叫集中刪除元素的集合作為輸入引數,並從呼叫集中刪除所有公共元素。

set1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}
set2 = {2, 4, 6, 8, 0}
set1.difference_update(set2)
print(set1)

輸出:

{1, 3, 5, 7, 9}

我們從 set1 中刪除了 set2 的所有元素,並使用上面程式碼中的 difference_update() 函式用結果集更新了 set1。與前兩種方法不同,沒有必要建立一個新的集合來儲存結果。相反,結果會自動插入到 set1

difference_update() 函式等效於 Python 中的 -= 運算子。

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

相關文章 - Python Set