Python 集合 (Set)
集合是 Python 中另一种重要的数据类型。它是一个无序且不包含重复元素的集合。集合的主要用途是进行成员资格测试和消除重复条目。
创建集合
集合由大括号 {} 定义,或者使用 set() 构造函数。
python
# 使用大括号创建集合
fruits = {"apple", "banana", "cherry"}
print(fruits)
# 使用 set() 构造函数从列表创建集合
# 注意:重复的元素会被自动移除
numbers_list = [1, 2, 2, 3, 4, 4, 4]
numbers_set = set(numbers_list)
print(numbers_set) # 输出: {1, 2, 3, 4}
# 从字符串创建集合
char_set = set("hello world")
print(char_set) # 输出: {'o', 'd', 'l', 'h', ' ', 'w', 'r', 'e'}注意:创建空集合
你不能使用 {} 来创建一个空集合,因为这会创建一个空字典。要创建一个空集合,你必须使用 set()。
python
empty_dict = {}
empty_set = set()
print(type(empty_dict)) # 输出: <class 'dict'>
print(type(empty_set)) # 输出: <class 'set'>集合的特性
- 无序性: 集合中的元素没有特定的顺序。你不能通过索引来访问集合中的元素(例如
my_set[0]会引发错误)。 - 唯一性: 集合中不能包含重复的元素。这是集合最核心的特性。
- 可变性: 集合本身是可变的,你可以向其中添加或删除元素。
常用集合方法
set.add(elem): 向集合中添加一个元素。set.update(iterable): 用另一个可迭代对象中的所有元素来更新集合。set.remove(elem): 从集合中移除一个元素。如果元素不存在,会引发KeyError。set.discard(elem): 从集合中移除一个元素。如果元素不存在,不会引发错误。set.pop(): 随机移除并返回集合中的一个元素。如果集合为空,会引发KeyError。set.clear(): 清空集合中的所有元素。
示例:
python
my_set = {1, 2, 3}
my_set.add(4)
print(my_set) # 输出: {1, 2, 3, 4}
my_set.update([4, 5, 6])
print(my_set) # 输出: {1, 2, 3, 4, 5, 6}
my_set.remove(1)
print(my_set) # 输出: {2, 3, 4, 5, 6}
my_set.discard(10) # 元素10不存在,但不会报错
print(my_set)集合运算
集合最强大的功能在于其数学运算,可以用来比较两个集合的关系。
假设我们有两个集合:
python
A = {1, 2, 3, 4}
B = {3, 4, 5, 6}并集 (Union): 返回一个包含两个集合中所有元素的新集合。
A | BA.union(B)- 结果:
{1, 2, 3, 4, 5, 6}
交集 (Intersection): 返回一个只包含两个集合中共有元素的新集合。
A & BA.intersection(B)- 结果:
{3, 4}
差集 (Difference): 返回一个包含在第一个集合中,但不在第二个集合中的元素的新集合。
A - B(A 中有,B 中没有)A.difference(B)- 结果:
{1, 2}
对称差集 (Symmetric Difference): 返回一个包含所有只在其中一个集合中出现的元素的新集合(即,并集减去交集)。
A ^ BA.symmetric_difference(B)- 结果:
{1, 2, 5, 6}
示例:
python
print(f"并集: {A | B}")
print(f"交集: {A & B}")
print(f"差集 (A-B): {A - B}")
print(f"对称差集: {A ^ B}")