如何使用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/)首发,欢迎大家访问。

相关推荐
奔跑吧邓邓子1 小时前
【Python爬虫(12)】正则表达式:Python爬虫的进阶利刃
爬虫·python·正则表达式·进阶·高级
码界筑梦坊1 小时前
基于Flask的京东商品信息可视化分析系统的设计与实现
大数据·python·信息可视化·flask·毕业设计
pianmian11 小时前
python绘图之箱型图
python·信息可视化·数据分析
csbDD2 小时前
2025年网络安全(黑客技术)三个月自学手册
linux·网络·python·安全·web安全
赔罪3 小时前
Python 高级特性-切片
开发语言·python
伊一大数据&人工智能学习日志4 小时前
selenium爬取苏宁易购平台某产品的评论
爬虫·python·selenium·测试工具·网络爬虫
说是用户昵称已存在4 小时前
Pycharm+CodeGPT+Ollama+Deepseek
ide·python·ai·pycharm
Fansv5874 小时前
深度学习-2.机械学习基础
人工智能·经验分享·python·深度学习·算法·机器学习
wang_yb4 小时前
『Python底层原理』--Python对象系统探秘
python·databook
databook4 小时前
『Python底层原理』--Python对象系统探秘
后端·python