集合
集合 (Set) 是 Python 中一种无序、不重复元素的集合。它类似于数学中的集合,拥有强大的去重功能,并支持一些数学运算,例如并集、交集、差集等。
集合的特点
- 集合元素必须是不可变类型,例如数字、字符串、元组等
- 集合元素无序,元素顺序不固定。
- 集合元素不重复,重复元素会被自动移除。
- 集合本身是可变类型,可以添加、删除不可变的元素
集合的创建
使用 {}
创建
python
my_set = {1, 2, 3, 4}
print(my_set) # 输出: {1, 2, 3, 4}
使用 set()
方法创建
python
my_list = [1, 2, 2, 3, 4]
my_set = set(my_list)
print(my_set) # 输出: {1, 2, 3, 4}
集合的操作
添加元素
使用 add()
方法添加单个元素,使用 update()
方法添加多个元素。
python
my_set = {1, 2, 3}
my_set.add(4)
print(my_set) # 输出: {1, 2, 3, 4}
my_set.update([5, 6, 7])
print(my_set) # 输出: {1, 2, 3, 4, 5, 6, 7}
删除元素
使用 remove()
方法删除指定元素,使用 discard()
方法删除可能存在的元素,使用 pop()
方法随机删除并返回一个元素。
python
my_set = {1, 2, 3, 4}
my_set.remove(3)
print(my_set) # 输出: {1, 2, 4}
my_set.discard(5) # 不会报错
print(my_set) # 输出: {1, 2, 4}
element = my_set.pop()
print(my_set) # 输出: {1, 2}
print(element) # 输出: 1 或者 2 (随机)
集合的遍历
使用 for
循环
这是最常用的遍历集合的方法。for
循环会依次迭代集合中的每个元素。
python
my_set = {1, 2, 3, 4}
for element in my_set:
print(element)
使用 itertools.chain()
函数
如果要遍历多个集合,可以使用 itertools.chain()
函数将它们连接起来,然后进行遍历。
python
from itertools import chain
set1 = {1, 2, 3}
set2 = {4, 5, 6}
for element in chain(set1, set2):
print(element)
使用 set.items()
函数
对于 set
的子类 set.items
,它是一个字典,我们可以使用 items()
函数获取键值对,然后遍历键值对。
python
my_items = {1: "one", 2: "two"}
for key, value in my_items.items():
print(f"Key: {key}, Value: {value}")
注意事项
- 由于集合是无序的,所以遍历顺序是不确定的。
- 遍历集合时,无法修改集合中的元素。
set
的子类set.items
是字典,所以可以使用items()
函数获取键值对,然后遍历键值对。
集合的运算
- 并集:
|
或union()
方法 - 交集:
&
或intersection()
方法 - 差集:
-
或difference()
方法 - 对称差集:
^
或symmetric_difference()
方法
python
set1 = {1, 2, 3}
set2 = {3, 4, 5}
print(set1 | set2) # 输出: {1, 2, 3, 4, 5}
print(set1 & set2) # 输出: {3}
print(set1 - set2) # 输出: {1, 2}
print(set1 ^ set2) # 输出: {1, 2, 4, 5}
应用场景
- 去重: 可以使用集合去除列表或其他可迭代对象中的重复元素。
- 成员判断: 使用
in
关键字判断元素是否在集合中。 - 数学运算: 可以方便地进行集合的并集、交集、差集等运算。
- 数据分析: 可以使用集合进行数据去重、查找重复元素、统计元素出现次数等。
python
# 去除列表中的重复元素
my_list = [1, 2, 2, 3, 4, 4, 5]
my_set = set(my_list)
print(my_set) # 输出: {1, 2, 3, 4, 5}
# 判断元素是否在集合中
my_set = {1, 2, 3}
print(1 in my_set) # 输出: True
print(4 in my_set) # 输出: False
# 计算两个集合的交集
set1 = {1, 2, 3}
set2 = {3, 4, 5}
intersection_set = set1 & set2
print(intersection_set) # 输出: {3}
总结
集合 (Set) 是 Python 中一个功能强大的数据结构,可以用于去重、成员判断、数学运算等。掌握集合的使用方法可以有效提高代码的效率和可读性。