• 周六. 11月 23rd, 2024

Python 集合的详细用法

城主

12月 29, 2022 ,

Python 中的集合是一种无序的不重复元素的集。集合可以使用大括号 {} 或者 set() 函数创建。

例如,我们可以使用以下方式创建一个集合:





# 使用大括号创建一个空集合
empty_set = {}

# 使用 set() 函数创建一个空集合
empty_set = set()

# 使用大括号创建一个非空集合
colors = {'red', 'green', 'blue'}

# 使用 set() 函数创建一个非空集合
colors = set(['red', 'green', 'blue'])

集合具有以下一些特性:

  • 集合中的元素是无序的,也就是说,集合中的元素在存储时的顺序并不重要。
  • 集合中的元素是不可重复的,也就是说,在集合中,每个元素只能出现一次。

在 Python 中,集合是可变的,也就是说,你可以在创建集合后向其中添加或删除元素。

例如,我们可以使用 add() 方法向集合中添加元素,使用 remove() 方法删除元素:





colors = {'red', 'green', 'blue'}

# 向集合中添加元素
colors.add('yellow')

# 删除集合中的元素
colors.remove('red')

Python 中的集合还支持许多其他操作,例如并集、交集、差集等,你可以使用集合的内置方法来实现这些操作。

Python 中的集合还支持许多其他操作,例如:

  • 并集:使用 union() 方法或者 | 运算符计算两个集合的并集。并集包含所有在任意一个集合中出现过的元素。例如:




set1 = {1, 2, 3}
set2 = {3, 4, 5}

# 使用 union() 方法计算并集
union = set1.union(set2)  # {1, 2, 3, 4, 5}

# 使用 | 运算符计算并集
union = set1 | set2  # {1, 2, 3, 4, 5}
  • 交集:使用 intersection() 方法或者 & 运算符计算两个集合的交集。交集包含所有同时出现在两个集合中的元素。例如:




set1 = {1, 2, 3}
set2 = {3, 4, 5}

# 使用 intersection() 方法计算交集
intersection = set1.intersection(set2)  # {3}

# 使用 & 运算符计算交集
intersection = set1 & set2  # {3}
  • 差集:使用 difference() 方法或者 - 运算符计算两个集合的差集。差集包含所有出现在第一个集合中但不出现在第二个集合中的元素。例如:




set1 = {1, 2, 3}
set2 = {3, 4, 5}

# 使用 difference() 方法计算差集
difference = set1.difference(set2)  # {1, 2}

# 使用 - 运算符计算差集
difference = set1 - set2  # {1, 2}

此外,还有许多其他的集合操作,

阅读  Python 虚拟环境的使用详解

,例如:

  • 子集:使用 issubset() 方法或者 <= 运算符判断一个集合是否是另一个集合的子集。例如:




set1 = {1, 2, 3}
set2 = {1, 2, 3, 4, 5}
set3 = {4, 5}

# 使用 issubset() 方法判断子集
print(set1.issubset(set2))  # True
print(set1.issubset(set3))  # False

# 使用 <= 运算符判断子集
print(set1 <= set2)  # True
print(set1 <= set3)  # False
  • 超集:使用 issuperset() 方法或者 >= 运算符判断一个集合是否是另一个集合的超集。例如:




set1 = {1, 2, 3}
set2 = {1, 2, 3, 4, 5}
set3 = {4, 5}

# 使用 issuperset() 方法判断超集
print(set2.issuperset(set1))  # True
print(set3.issuperset(set1))  # False

# 使用 >= 运算符判断超集
print(set2 >= set1)  # True
print(set3 >= set1)  # False
  • 对称差集:

对称差集是两个集合的差集的并集。它包含所有出现在任意一个集合中但不同时出现在两个集合中的元素。

例如,对于两个集合 {1, 2, 3}{3, 4, 5},它们的对称差集是 {1, 2, 4, 5}

你可以使用 symmetric_difference() 方法或者 ^ 运算符计算两个集合的对称差集。例如:





set1 = {1, 2, 3}
set2 = {3, 4, 5}

# 使用 symmetric_difference() 方法计算对称差集
symmetric_difference = set1.symmetric_difference(set2)  # {1, 2, 4, 5}

# 使用 ^ 运算符计算对称差集
symmetric_difference = set1 ^ set2  # {1, 2, 4, 5}

此外,还有一种常见的使用对称差集的方式是求并集的补集。你可以使用 symmetric_difference_update() 方法或者 ^= 运算符在原来的集合中保留与另一个集合的对称差集,即在原来的集合中删除与另一个集合的交集和并集。例如:





set1 = {1, 2, 3}
set2 = {2, 3, 4}

# 使用 symmetric_difference_update() 方法求并集的补集
set1.symmetric_difference_update(set2)  # set1 现在是 {1, 4}

# 使用 ^= 运算符求并集的补集
set1 ^= set2  # set1 现在是 {1, 4}

此外,Python 中的集合还支持以下一些操作:

  • 求交集的补集:使用 difference_update() 方法或者 -= 运算符在原来的集合中删除与另一个集合的交集。例如:




set1 = {1, 2, 3}
set2 = {2, 3, 4}

# 使用 difference_update() 方法求交集的补集
set1.difference_update(set2)  # set1 现在是 {1}

# 使用 -= 运算符求交集的补集
set1 -= set2  # set1 现在是 {1}
  • 求并集的补集:使用 symmetric_difference_update() 方法或者 ^= 运算符在原来的集合中保留与另一个集合的对称差集,即在原来的集合中删除与另一个集合的交集和并集。例如:




set1 = {1, 2, 3}
set2 = {2, 3, 4}

# 使用 symmetric_difference_update() 方法求并集的补集
set1.symmetric_difference_update(set2)  # set1 现在是 {1, 4}

# 使用 ^= 运算符求并集的补集
set1 ^= set2  # set1 现在是 {1, 4}
  • 判断两个集合是否有交集:使用 intersection() 方法或者 & 运算符计算两个集合的交集,然后判断结果集合是否为空。例如:




set1 = {1, 2, 3}
set2 = {2, 3, 4}

# 使用 intersection() 方法判断两个集合是否有交集
if set1.intersection(set2):
    print("set1 和 set2 有交集")
else:
    print("set1 和 set2 没有交集")

此外,Python 中的集合还支持以下一些操作:

  • 清空集合:使用 clear() 方法清空集合中的所有元素。例如:




set1 = {1, 2, 3}

# 使用 clear() 方法清空集合
set1.clear()  # set1 现在是空集合
  • 复制集合:使用 copy() 方法复制集合。例如:




set1 = {1, 2, 3}

# 使用 copy() 方法复制集合
set2 = set1.copy()
  • 删除集合中的随机元素:使用 pop() 方法删除集合中的随机元素。例如:




set1 = {1, 2, 3}

# 使用 pop() 方法删除集合中的随机元素
set1.pop()  # 删除一个随机元素

此外,Python 中的集合还有许多其他的方法和操作,例如 update() 方法、isdisjoint() 方法、copy() 方法等。

阅读  Python Web 开发使用详解

Python 中的集合还可以和序列、字典等数据结构一起使用,来实现许多有用的功能。

例如,你可以使用集合和列表一起,来去除列表中的重复元素:





# 列表中有重复元素
numbers = [1, 2, 3, 1, 2, 3]

# 将列表转换为集合,去除重复元素
numbers_set = set(numbers)

# 将集合转换回列表
unique_numbers = list(numbers_set)  # [1, 2, 3]

总之,Python 中的集合支持以下几种操作类型:

  1. 基本操作:包括创建、添加、删除、查询和遍历集合中的元素。
  2. 集合运算:包括并集、交集、差集、子集和超集。
  3. 其他操作:包括清空集合、复制集合、删除集合中的随机元素等。

此外,Python 中的集合还有许多其他的方法和操作,例如 update() 方法、isdisjoint() 方法、copy() 方法等。