Python集合

2025年4月28日 | 阅读10分钟

在 Python 中,集合 (Set) 是用于将多个项目存储在单个变量中的四种内置数据类型之一。集合是无索引且无序的唯一元素集合。例如,当存储员工 ID 信息时,集合是一个合适的选项,因为这些 ID 不能有重复项。

Python Set

让我们看一个集合的简单示例。

示例

立即执行

输出

{209, 202, 204, 205, 207}

说明

在上面的示例中,我们创建了一个包含多个项目的简单集合。在这里,我们可以看到初始化集合中的项目是无序的。

集合是一种可变数据类型,这意味着我们可以向其中添加或删除数据元素。Python 集合类似于数学中的集合,我们可以执行交集、并集、对称差等操作。

Python 集合的特点

Python 中的集合是一种数据类型,它

  • 无序: 集合不维护元素存储的顺序。
  • 无索引: 我们无法通过索引访问集合的数据元素。
  • 无重复元素: 集合中的每个数据元素都是唯一的。
  • 可变(可更改): Python 中的集合允许在创建后修改其元素。

创建集合

在 Python 中创建集合是一个非常简单易行的过程。Python 提供了两种创建集合的方法:

  1. 使用花括号
  2. 使用 set() 函数

使用花括号

可以通过将元素括在花括号 '{}' 中,并用逗号分隔来创建集合。

让我们看一个使用花括号创建集合的简单示例。

示例

立即执行

输出

{6, 7, 9, 10, 11, 12}
{'one', 'three', 'two', 'four', 'five'}
{600.0, 'tpointtech', 12, 7.2}

说明

在此示例中,我们使用花括号创建了不同类型的集合。此外,我们可以观察到集合可以存储任意数量的、不同类型的项目,例如 整数、浮点数、元组字符串 等。但是,集合不能存储可变元素,如列表、集合本身或字典

使用 set() 函数

Python 通过一个名为 set() 的内置函数提供了另一种创建集合的方式。此函数允许我们从传入的可迭代对象创建集合。

以下示例展示了使用 set() 函数的方法

示例

立即执行

输出

Set 1: {1, 3, 4, 6, 7, 8, 10}
Set 2: set()

说明

在上面的示例中,我们使用 set() 函数从给定的列表中创建了集合。我们还通过使用不带参数的 set() 函数创建了一个空集合。

注意:创建空集合有点棘手。空的 {} 花括号在 Python 中会创建一个空字典。

访问集合的元素

由于集合是无序和无索引的,我们无法通过位置访问元素。但是,我们可以使用循环遍历集合。

让我们看一个展示如何在 Python 中遍历集合的简单示例。

示例

立即执行

输出

Given Set: {17, 5, 7, 8, 11, 12}
Iterating through the Set:
17
5
7
8
11
12

说明

在此示例中,我们使用了 'for' 循环 来遍历给定集合的元素。

向集合中添加元素

Python 提供了 add() 和 update() 等方法来向集合中添加元素。

  • add(): 此方法用于将单个元素添加到集合中。
  • update(): 此方法用于将多个元素添加到集合中。

让我们看一个展示如何在 Python 中向集合添加元素的简单示例。

示例

立即执行

输出

Given Set: {'physics', 'biology', 'chemistry'}
Updated Set (Added single element): {'physics', 'biology', 'chemistry', 'maths'}
Update Set (Added Multiple elements): {'physics', 'chemistry', 'english', 'biology', 'computer', 'maths'}

说明

在此示例中,我们给出了一个包含 3 个元素的集合。然后我们使用 add() 方法添加了一个新元素到集合中。我们还使用 update() 方法将多个元素添加到了给定的集合中。

从集合中移除元素

在 Python 中,我们可以使用 remove()、discard()pop() 和 clear() 等方法轻松地从给定集合中移除元素。

  • remove(): 此方法允许我们从集合中移除特定元素。如果元素不在给定的集合中,它将引发 KeyError。
  • discard(): 此方法也用于从集合中移除指定的元素;但是,如果元素不存在,它不会引发任何错误。
  • pop(): 此方法用于从集合中移除并返回一个随机元素。
  • clear(): 此方法用于移除给定集合中的所有元素。

下面是一个简单的示例,展示了这些方法在 Python 中移除集合元素的工作原理。

示例

立即执行

输出

Given Set: {'physics', 'chemistry', 'english', 'computer', 'biology', 'maths'}
Updated Set (Removed 'maths'): {'physics', 'chemistry', 'english', 'computer', 'biology'}
Updated Set (Removed 'chemistry'): {'physics', 'english', 'computer', 'biology'}
Updated Set (Removed a random element'): {'english', 'computer', 'biology'}
Updated Set (Removed all elements): set()

说明

在此示例中,我们给出了一个包含六个元素的集合。然后我们使用 remove() 和 discard() 方法从集合中移除了指定的元素。然后我们使用 pop() 方法从集合中移除了一个随机元素。最后,我们使用 clear() 方法移除了给定集合中的所有元素。结果,集合变为空。

Python 集合运算

与数学中的集合论类似,Python 集合也支持各种数学运算,如并集、交集、差集、对称差集等。

让我们通过示例来讨论其中一些运算。

集合的并集

从数学上讲,集合 A 和 B 的并集被定义为所有属于 A 或 B 或两者的元素的集合,并用 A∪B 表示。


Python Set

例如,设 A = {1, 2, 3}B = {2, 3, 4, 5}。因此,A∪B = {1, 2, 3, 4, 5}

同样,在 Python 中,我们可以通过合并集合的元素并通过 | 运算符或 union() 方法来执行集合的并集,并消除重复项。

让我们看一个展示 Python 中集合并集的简单示例。

示例

立即执行

输出

Set A: {1, 2, 3}
Set B: {2, 3, 4, 5}

Union of Sets A and B:
Method 1: {1, 2, 3, 4, 5}
Method 2: {1, 2, 3, 4, 5}

说明

在上面的示例中,我们定义了两个集合,并通过 | 运算符和 union() 方法执行了它们的并集。

集合的交集

从数学上讲,两个集合 A 和 B 的交集被定义为所有同时属于 A 和 B 的元素的集合,并用 A∩B 表示。


Python Set

例如,设 A = {1, 2, 3}B = {2, 3, 4, 5}。因此,A∩B = {2, 3}

同样,在 Python 中,我们可以使用 & 运算符或 intersection() 方法来执行集合的交集,以返回两个集合中的共同元素。

让我们看一个展示 Python 中集合交集的简单示例。

示例

立即执行

输出

Set A: {1, 2, 3}
Set B: {2, 3, 4, 5}

Intersection of Sets A and B:
Method 1: {2, 3}
Method 2: {2, 3}

说明

在上面的示例中,我们定义了两个集合,并通过 & 运算符和 intersection() 方法执行了它们的交集。

集合的差集

从数学上讲,两个集合 A 和 B 的差集被定义为所有属于 A 但不属于 B 的元素的集合,并用 A-B 表示。


Python Set

例如,设 A = {1, 2, 3}B = {2, 3, 4, 5}。因此,A-B = {1} 且 B-A = {4, 5}

同样,在 Python 中,我们可以使用 - 运算符或 difference() 方法来执行集合的差集,以返回第一个集合中存在但第二个集合中不存在的元素。

让我们看一个展示 Python 中集合差集的简单示例。

示例

立即执行

输出

Set A: {1, 2, 3}
Set B: {2, 3, 4, 5}

A - B:
Method 1: {1}
Method 2: {1}

B - A:
Method 1: {4, 5}
Method 2: {4, 5}

说明

在上面的示例中,我们定义了两个集合,并通过 - 运算符和 difference() 方法执行了它们的差集。

集合推导式

在 Python 中,集合推导式允许我们以简洁易懂的方式创建集合。

以下示例演示了 Python 中集合推导式的工作原理

示例

立即执行

输出

{0, 1, 4, 9, 16, 25}
{0, 1, 64, 8, 27, 125}

说明

在上面的示例中,我们使用集合推导式创建了所需的集合。

Python 中的 frozenset

frozenset 是集合的不可变版本,这意味着一旦创建,我们就不能向其中添加或删除元素。我们可以使用 Python 的内置函数 frozenset() 来创建 frozenset 对象。

让我们看一个展示如何在 Python 中创建 frozenset 的简单示例。

示例

立即执行

输出

frozenset({'two', 'one', 'five', 'four', 'three'})
<class 'frozenset'>

说明

在上面的示例中,我们使用 frozenset() 函数返回了传入的可迭代对象的 frozenset 对象。

Frozensets 是可哈希的对象,可以用作字典的键或另一个集合的元素。

结论

Python 集合是处理唯一项集合的强大工具。Python 中的集合提供了高效的操作来测试成员资格、消除重复项以及执行数学集合运算。理解集合及其功能可以极大地提升处理数据和开发 Python 算法的技能。


Python 集合 - 选择题

1. Python 集合的主要特点是什么?

  1. 它维护元素的顺序
  2. 它是不可变的
  3. 它只包含唯一元素
  4. 它允许重复元素
 

答案: c) 它只包含唯一元素


2. 以下哪种是 Python 中创建集合的正确方法?

  1. set_A = []
  2. set_A = {2, 4, 6}
  3. set_A = (2, 4, 6)
  4. set_A = "246"
 

答案: b) set_A = {2, 4, 6}


3. 以下代码将产生什么结果?

  1. 3
  2. 5
  3. 4
  4. Error
 

答案: c) 4


4. 以下哪个操作可用于向集合中添加元素?

  1. add()
  2. append()
  3. insert()
  4. extend()
 

答案: a) add()


5. 下列代码的输出是什么?

  1. {2, 6, 8, 12}
  2. {8, 12}
  3. {2, 6}
  4. {}
 

答案: c) {2, 6}


下一个主题Python 集合方法