在 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