程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

Python基础-Python中集合Set的高级操作介绍

hfteth 2025-04-29 00:35:25 技术文章 11 ℃

在之前的分享中,我们介绍了关于Python中Set集合的简单操作,实际上在Python中还提供了关于Set集合更多强大的操作功能,下面我们就来详细看看这些高级功能的使用。

交集、并集、差集和对称差集

两个集合的交集表示该操作会返回两个集合中都存在的元素而组成的一个新的集合。代码如下所示。

# 创建两个集合
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}

# 交集
intersection = set1.intersection(set2)
print("Intersection:", intersection)  # Output: {4, 5}

两个集合的并集表示该操作会返回两个集合中所有唯一的元素所组成的一个新的集合,代码如下所示。

# 创建两个集合
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}

# 并集
union = set1.union(set2)
print("Union:", union)  # Output: {1, 2, 3, 4, 5, 6, 7, 8}

两个集合的差集表示只会返回存在于第一个集合中的元素,也就是说如果有两个集合set1和set2,那么set1.difference(set2) 返回 {1, 2, 3},即只包含在 set1 中但不在 set2 中的元素。如下所示。

# 创建两个集合
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}

# 差集
difference = set1.difference(set2)
print("Difference:", difference)  # Output: {1, 2, 3}

两个集合的对称差集,表示返回两个集合中仅存在于其中一个集中的元素所组成的元素集合。也就是说set1.symmetric_difference(set2) 返回 {1, 2, 3, 6, 7, 8},即包含在 set1set2 中但不同时存在于两者中的元素。如下所示。

# 创建两个集合
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}

# 对称差集
symmetric_difference = set1.symmetric_difference(set2)
print("Symmetric Difference:", symmetric_difference)  # Output: {1, 2, 3, 6, 7, 8}

集合操作符

在集合操作中也可以直接使用符号来进行上述的操作。如下所示。

  • &: 交集操作符。
  • |: 并集操作符。
  • -: 差集操作符。
  • ^: 对称差集操作符。

给出上述操作示例代码如下所示。

# 使用操作符进行集合操作
intersection_op = set1 & set2
union_op = set1 | set2
difference_op = set1 - set2
symmetric_difference_op = set1 ^ set2

print("Intersection (Operator):", intersection_op)  # Output: {4, 5}
print("Union (Operator):", union_op)  # Output: {1, 2, 3, 4, 5, 6, 7, 8}
print("Difference (Operator):", difference_op)  # Output: {1, 2, 3}
print("Symmetric Difference (Operator):", symmetric_difference_op)  # Output: {1, 2, 3, 6, 7, 8}

子集和超集检查

子集和超集的检查,就是就是判断一个集合是否为另一个集合的子集,或者是超集,子集表示该集合的元素要比原来集合的少,而超集则表示该集合比原集合的数据元素多,如下所示。

# 子集和超集检查
subset_check = {1, 2}.issubset(set1)
superset_check = set1.issuperset({1, 2})

print("Subset Check:", subset_check)  # Output: True
print("Superset Check:", superset_check)  # Output: True
  • issubset():判断一个集合是否是另一个集合的子集。
  • issuperset():判断一个集合是否是另一个集合的超集。

集合推导式

在之前我们也介绍过集合推导式,表示允许通过某些条件来创建一个新的集合操作。如下所示。

# 集合推导式
evens = {x for x in range(10) if x % 2 == 0}
print("Set Comprehension:", evens)  # Output: {0, 2, 4, 6, 8}

增强赋值操作

增强赋值操作的意思就是说,可通过一种简单的方式来更新集合数据,而不需要新的赋值操作。如下所示。

set1.update({6, 7})
print("Updated set1:", set1)  # Output: {1, 2, 3, 4, 5, 6, 7}

set1.intersection_update(set2)
print("Intersection Update:", set1)  # Output: {4, 5}

set1.difference_update(set2)
print("Difference Update:", set1)  # Output: set()
  • update(): 将一个集合的元素添加到另一个集合中。
  • intersection_update(): 保留两个集合的交集并更新原始集合。
  • difference_update(): 从一个集合中移除与另一个集合相同的元素并更新原始集合。
  • symmetric_difference_update(): 将两个集合中仅存在于一个集合中的元素添加到原始集合中。

集合的复制

可以通过使用copy()方法或set()构造函数进行集合的复制。

# 复制集合
copy_of_set1 = set1.copy()
print("Copy of set1:", copy_of_set1)  # Output: set()

删除操作

通过如下的方法可以对集合中的元素进行删除操作,如下所示。

  • remove():删除集合中的指定元素,如果元素不存在,则引发 KeyError 异常。
  • discard():删除集合中的指定元素,如果元素不存在,则不执行任何操作。
  • pop():随机删除并返回集合中的一个元素。
# 删除操作
set1.remove(4)
print("After removing 4:", set1)  # Output: {5}

set1.discard(5)
print("After discarding 5:", set1)  # Output: set()

popped_element = set2.pop()
print("Popped element from set2:", popped_element)  # Output: Some element from set2

清空集合

通过clear()函数来清空集合中的所有元素操作。

# 清空集合
set2.clear()
print("Cleared set2:", set2)  # Output: set()

总结

以上就是Set集合操作的一些高级操作,当然在实际使用的时候需要结合实际情况来灵活应变,这样才能发挥出集合高级操作的作用。

Tags:

最近发表
标签列表