Python 集合(Set)详解:去重与集合运算

什么是集合?

集合(Set)是Python中的一种无序不重复的数据结构,就像数学中的集合一样。

创建集合

# 使用大括号
fruits = {'苹果', '香蕉', '橙子'}

# 使用set()函数(自动去重)
numbers = set([1, 2, 2, 3, 3, 4])
print(numbers)  # {1, 2, 3, 4}

# 空集合必须用set()
empty = set()

基本操作

fruits = {'苹果'}
fruits.add('香蕉')
fruits.remove('苹果')     # 元素不存在会报错
fruits.discard('不存在')  # 元素不存在不报错

集合运算

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

# 并集
print(a | b)  # {1, 2, 3, 4, 5, 6}

# 交集
print(a & b)  # {3, 4}

# 差集
print(a - b)  # {1, 2}

# 对称差
print(a ^ b)  # {1, 2, 5, 6}

实用场景

1. 列表去重

nums = [3, 1, 2, 1, 3, 4, 2]
unique = list(dict.fromkeys(nums))  # 保持顺序 [3, 1, 2, 4]

2. 判断唯一性

def has_duplicates(lst):
    return len(lst) != len(set(lst))

3. 找出列表差异

old_users = {'Tom', 'Jerry'}
new_users = {'Tom', 'Bob'}

new_joiners = new_users - old_users  # {'Bob'}
left_users = old_users - new_users   # {'Jerry'}

总结

集合在处理去重、判断归属、多个集合运算上非常高效。合理使用集合能大大简化你的代码。