如何使用Python Set?

本教程将向您介绍 Python 集合(Set)以及如何使用它们。

译自What Are Python 'Sets' and How Do You Use Them?,作者 Jack Wallen。

Python 集合(Set)是一种可迭代、可变且不可重复的数据类型。此数据类型非常方便。例如,你需要存储员工 ID 的信息。你肯定不希望这些 ID 在应用程序中重复,因为这可能会导致问题。

例如,你有以下员工 ID:

  • 001
  • 002
  • 003
  • 004
  • ...

你可以将特定信息附加到每个 ID,例如姓名、电子邮件、电话号码、生日等。如果 ID 重复,数据的交叉授粉可能会导致混乱或应用程序无法按预期运行。

集合可以包含任意数量的项目,甚至可以是不同类型,例如字符串、整数、元组、浮点数等。

集合的主要用例包括删除重复项、检查集合成员资格以及执行某些数学运算(例如并集、交集、差集和对称差集)。

Python 包含内置的set()函数,可以轻松创建集合,如下所示:

ini 复制代码
set1 = set([2, 2, 2, 4, 4, 4, 6, 8, 8, 10])

上面你看到的是一个集合,其中包含一个数字列表,其中一些数字重复。如果我们想确保删除那些重复的数字呢?多亏了set(),该功能已内置其中。例如,我们可以使用以下行打印set1

我们的整个代码块如下所示:

scss 复制代码
set1 = set([2, 2, 2, 4, 4, 4, 6, 8, 8, 10])
print('Set1: ', set1)

如果我们运行 about,set()将删除所有重复的数字,因此输出将是:

css 复制代码
Set1: {2, 4, 6, 8, 10}

请记住,集合还可以包含混合类型,因此我们可以有一个如下所示的集合:

ini 复制代码
set2 = set((1, 1, 3, 5, 'cat', 'dog', 'mouse', 'mouse'))

上面的集合使用元组而不是列表。我们可以为该集合添加一个打印行,如下所示:

我们的整个代码块现在如下所示:

python 复制代码
set1 = set([2, 2, 2, 4, 4, 4, 6, 8, 8, 10])
set2 = set((1, 1, 3, 5, 'cat', 'dog', 'mouse', 'mouse'))
print('Set1: ', set1)
print('Set2: ', set2)

然后输出将是:

arduino 复制代码
Set1: {2, 4, 6, 8, 10}
Set2: {1, 3, 'dog', 5, 'cat', 'mouse'}

所有重复项都已删除。

另一种封闭集合的方法是使用{},如下所示:

ini 复制代码
set3 = {2, 2, 4, 6, 6, 'cat', 'dog', 'mouse', 'mouse', 3.14, (3, 2, 1)}

最终集合的输出将是:

arduino 复制代码
Set3: {'cat', 2, 3.14, 'dog', 4, 6, (3, 2, 1), 'mouse'}

需要注意的一件事是,我们确实有一个重复的元素......2。这是怎么回事?因为(1, 2, 3)本身就是一个元素。如果我们只复制该元素,则只会打印一个实例。该集合可能如下所示:

ini 复制代码
set3 = {2, 2, 4, 6, 6, 'cat', 'dog', 'mouse', 'mouse', 3.14, (3, 2, 1), (3, 2, 1)}

运行应用程序,Set3输出将保持不变:

arduino 复制代码
Set3: {'cat', 2, 3.14, 'dog', 4, 6, (3, 2, 1), 'mouse'}

因此,(3, 2, 1)重复项也被删除了。

还可以检查元素是否存在于集合中。这是通过in关键字完成的。检查结果将为TrueFalse

例如,我们想检查cat是否在set3中,从print()语句中,可以这样做:

我们可以将其添加到我们的完整代码块中,如下所示:

python 复制代码
set1 = set([2, 2, 2, 4, 4, 4, 6, 8, 8, 10])
set2 = set((1, 1, 3, 5, 'cat', 'dog', 'mouse', 'mouse'))
set3 = {2, 2, 4, 6, 6, 'cat', 'dog', 'mouse', 'mouse', 3.14, (3, 2, 1), (3, 2, >
print('cat' in set3)
print('Set1: ', set1)
print('Set2: ', set2)
print('Set3: ', set3)

如果我们运行上述代码,输出将如下所示:

vbnet 复制代码
True
Set1: {2, 4, 6, 8, 10}
Set2: {1, 3, 5, 'cat', 'mouse', 'dog'}
Set3: {2, 3.14, 4, 6, 'cat', (3, 2, 1), 'mouse', 'dog'}

我们可以这样运行相反的检查:

我们的输出现在将如下所示:

vbnet 复制代码
True
False
Set1: {2, 4, 6, 8, 10}
Set2: {1, 3, 5, 'cat', 'mouse', 'dog'}
Set3: {2, 3.14, 4, 6, 'cat', (3, 2, 1), 'mouse', 'dog'}

我们还可以创建空集合,如下所示:

然后我们可以对新集合的数据类型运行测试,如下所示:

bash 复制代码
print('Data type of our empty set = ', type(empty_set1))

上述输出将是:

python 复制代码
*Data type of our empty set = <class 'set'>*

如果你需要在集合中添加或更新项目,那也是可能的。假设我们的集合是:

ini 复制代码
set1 = {21, 12, 21, 42, 33}

让我们使用以下命令打印该集合:

bash 复制代码
print('Initial Set:',set1)

输出将是:

sql 复制代码
Initial Set: {33, 42, 12, 21}

集合

再次,set()去掉了重复的 21。

我们可以使用add()函数向集合中添加元素,如下所示:

添加另一行打印更新后的内容,如下所示:

bash 复制代码
print('Updated Set:', set1)

新的输出将是:

sql 复制代码
Initial Set:  {33, 42, 12, 21}
Updated Set: {32, 33, 42, 12, 21}

我们还可以对集合使用update()。假设我们有两个集合:

ini 复制代码
set1 = {'Tom Sawyer', 'Analog Kid', 'Between The Wheels'}
set2 = {'La Villa Strangiato', 'YYZ', 'Main Monkey Business'}

然后我们使用update()函数,如下所示:

添加一个打印语句,如下所示:

此代码块的输出将是:

css 复制代码
{'Tom Sawyer', 'Main Monkey Business', 'YYZ', 'Analog Kid', 'Between The Wheels', 'La Villa Strangiato'}

最后,我们将使用discard()函数从集合中删除一个元素,如下所示:

ini 复制代码
removedValue = set1.discard('Between The Wheels')

我们的代码将如下所示:

bash 复制代码
set1 = {'Tom Sawyer', 'Analog Kid', 'Between The Wheels'}
 
print('Initial Set:',set1)
 
removedValue = set1.discard('Between The Wheels')
 
print('Set after discard:', set1)

我们的输出现在是:

sql 复制代码
Initial Set: {'Tom Sawyer', 'Between The Wheels', 'Analog Kid'}
Set after discard: {'Tom Sawyer', 'Analog Kid'}

这就是 Python 中集合的基础知识。当你需要删除重复项或检查各种数据类型的元素时,此功能将派上用场。要详细了解你可以使用集合做什么,请务必查看官方文档

本文在云云众生yylives.cc/)首发,欢迎大家访问。

相关推荐
郭庆汝3 小时前
pytorch、torchvision与python版本对应关系
人工智能·pytorch·python
思则变7 小时前
[Pytest] [Part 2]增加 log功能
开发语言·python·pytest
漫谈网络7 小时前
WebSocket 在前后端的完整使用流程
javascript·python·websocket
try2find8 小时前
安装llama-cpp-python踩坑记
开发语言·python·llama
博观而约取9 小时前
Django ORM 1. 创建模型(Model)
数据库·python·django
精灵vector11 小时前
构建专家级SQL Agent交互
python·aigc·ai编程
Zonda要好好学习11 小时前
Python入门Day2
开发语言·python
Vertira11 小时前
pdf 合并 python实现(已解决)
前端·python·pdf
太凉11 小时前
Python之 sorted() 函数的基本语法
python
项目題供诗11 小时前
黑马python(二十四)
开发语言·python