在 Python 中,集合(set)是一个无序的、不包含重复元素的容器。集合通常用于以下场景:
- 成员资格测试:快速检查某个元素是否存在于集合中。
- 去除重复项:从数据中移除重复的元素。
- 集合运算:执行数学上的集合运算,如并集、交集、差集和对称差分。
集合的特性:
- 无序性:集合中的元素不保持任何特定的顺序。
- 唯一性:集合中的所有元素都是唯一的,不允许重复。
- 可变性:集合是可变的,可以添加或删除元素。
- 迭代性:可以迭代集合中的元素。
集合的基本操作:
-
创建集合:
my_set = {1, 2, 3} my_set = set([1, 2, 3]) # 从列表创建集合
-
添加元素:
my_set.add(4)
-
删除元素:
my_set.remove(2) # 移除元素 2 my_set.discard(3) # 移除元素 3,如果元素不存在,不会引发错误
-
集合运算:
- 并集(Union):
a = {1, 2, 3} b = {3, 4, 5} union_set = a.union(b) # 或者 a | b
- 交集(Intersection):
intersection_set = a.intersection(b) # 或者 a & b
- 差集(Difference):
difference_set = a.difference(b) # 或者 a - b
- 对称差分(Symmetric Difference):
symmetric_difference_set = a.symmetric_difference(b) # 或者 a ^ b
- 并集(Union):
-
测试成员资格:
if 2 in my_set: print("2 is in the set")
-
转换为列表或元组:
list_set = list(my_set) tuple_set = tuple(my_set)
何时使用集合:
- 数据去重:当你需要从一组数据中移除重复项时。
- 集合运算:当你需要执行数学上的集合运算时。
- 快速查找:集合提供了非常快速的成员资格测试。
- 无序集合:当你不需要保持元素顺序时。
- 集合比较:当你需要比较两个集合的包含关系时。
示例:
# 去除列表中的重复元素
my_list = [1, 2, 2, 3, 4, 4, 5]
unique_items = set(my_list)
print(unique_items) # 输出: {1, 2, 3, 4, 5}
# 成员资格测试
my_set = {1, 2, 3}
if 2 in my_set:
print("2 is in the set") # 输出: 2 is in the set
# 集合运算
a = {1, 2, 3}
b = {3, 4, 5}
print(a.union(b)) # 输出: {1, 2, 3, 4, 5}
print(a.intersection(b)) # 输出: {3}
print(a.difference(b)) # 输出: {1, 2}
print(a.symmetric_difference(b)) # 输出: {1, 2, 4, 5}
集合是 Python 中非常有用的数据结构,特别适合于需要快速成员资格测试和执行集合运算的场景。