Python中的集合及集合运算

今天我们将深入探讨一种独特而强大的Python数据结构:集合

当你想要存储唯一项、去除重复项或执行数学操作(如并集、交集和差集)时,集合非常有用。

让我们来探索集合是如何工作的,以及它们的使用场景! 🐍


📦 你将学到什么

  • 集合是什么以及如何创建它们
  • 集合与列表和元组的区别
  • 内置集合方法
  • 集合操作:并集、交集、差集、对称差集
  • 实际应用案例

🔹 1. 什么是集合?

集合是一种无序可变无索引的集合,不允许重复值

🔹 语法:

my_set = {1, 2, 3}

您还可以使用 set() 构造函数创建一个空集合:

empty_set = set()

⚠️ {} 创建的是一个空字典,而不是一个集合!


✅ 2. 为什么使用集合?

  • 自动去除重复项
  • 非常适合成员测试in
  • 数学运算中效率极高
  • 理想用于比较值的集合

🔧 3. 基本集合操作

创建一个集合

fruits = {"apple", "banana", "cherry"}

添加项目

fruits.add("orange")

移除项目

fruits.remove("banana")     # 如果未找到则引发错误

fruits.discard("banana") # 安全移除(无错误)

清除所有项目

fruits.clear()

复制一个集合

new_set = fruits.copy()

🔁 4. 设置循环

for fruit in fruits:
    print(fruit)

注意:由于集合是无序的,输出可能不遵循插入顺序。

🔀 5. 集合操作

让我们来看两个集合:

a = {1, 2, 3, 4}
b = {3, 4, 5, 6}

🔸 并集 – 所有唯一项

print(a | b)              # {1, 2, 3, 4, 5, 6}
print(a.union(b))         # 相同的结果

🔸 交集 – 公共项

print(a & b)              # {3, 4}
print(a.intersection(b))  # 相同的结果

🔸差异 – 在 A 中但不在 B 中的项

print(a - b)              # {1, 2}
print(a.difference(b))    # 相同的结果

🔸 对称差异 – 在 A 或 B 中,但不在两者中

print(a ^ b)                      # {1, 2, 5, 6}
print(a.symmetric_difference(b)) # 相同

🔎 6. 成员测试

print(3 in a)     # True
print(10 in a)    # False

在集合中,这比在列表中更快!


⚠️ 7. 集合与其他集合的比较

特性 列表 元组 集合
有序
可变性
允许重复
可索引
快速成员查找

🧪 现实世界示例

1. 从列表中移除重复项

nums = [1, 2, 2, 3, 4, 4, 5]
unique_nums = list(set(nums))
print(unique_nums)  # [1, 2, 3, 4, 5]

2. 检查共同兴趣

alice_hobbies = {"reading", "coding", "traveling"}
bob_hobbies = {"coding", "gaming"}
common = alice_hobbies & bob_hobbies print(common) # {'coding'}

3. 句子中的唯一单词

sentence = "this is a test this is only a test"
unique_words = set(sentence.split()) print(unique_words)

🧠 回顾

今天你学到了:

  • 集合是什么以及如何创建和修改集合
  • 集合会去除重复项并加速成员测试
  • 集合操作:并集、交集、差集等
  • 使用集合进行清理和比较的实际案例

更多