Python快速入门教程5:集合
一、集合简介
集合(set)是Python中的一种无序且不重复元素的容器类型。它基于哈希表实现,因此查找和插入操作的时间复杂度接近于O(1)。集合非常适合用于成员测试、去重等场景。
创建集合
- 使用花括号{}(注意:空集合不能用{}表示,要用set())
- 使用set()构造函数将其他可迭代对象转换为集合
# 方法1:使用花括号
fruits = {'apple', 'banana', 'orange'}
# 方法2:使用set()构造函数
numbers = set([1, 2, 3, 4, 5])
empty_set = set() # 创建空集合
二、集合的基本操作
添加元素
- 使用add()方法添加单个元素
- 使用update()方法添加多个元素(可以是另一个集合、列表等)
# 添加单个元素
fruits.add('grape')
# 添加多个元素
fruits.update(['mango', 'pear'])
删除元素
- 使用remove()方法删除指定元素,如果元素不存在则抛出KeyError
- 使用discard()方法删除指定元素,如果元素不存在不会报错
- 使用pop()方法随机删除并返回一个元素(集合是无序的,所以无法确定删除哪个元素)
# 删除元素
fruits.remove('apple') # 如果'apple'不存在会抛出KeyError
fruits.discard('banana') # 即使'banana'不存在也不会报错
# 随机删除一个元素
random_fruit = fruits.pop()
print(random_fruit)
清空集合
使用clear()方法清空集合中的所有元素
fruits.clear()
三、集合运算
并集(Union)
使用|运算符或union()方法获取两个集合的并集
set1 = {1, 2, 3}
set2 = {3, 4, 5}
union_set = set1 | set2 # 或者使用 union_set = set1.union(set2)
print(union_set) # 输出 {1, 2, 3, 4, 5}
交集(Intersection)
使用&运算符或intersection()方法获取两个集合的交集
intersection_set = set1 & set2 # 或者使用 intersection_set = set1.intersection(set2)
print(intersection_set) # 输出 {3}
差集(Difference)
使用-运算符或difference()方法获取一个集合相对于另一个集合的差集
difference_set = set1 - set2 # 或者使用 difference_set = set1.difference(set2)
print(difference_set) # 输出 {1, 2}
对称差集(Symmetric Difference)
使用^运算符或symmetric_difference()方法获取两个集合的对称差集(即不在两个集合交集中出现的元素)
sym_diff_set = set1 ^ set2 # 或者使用 sym_diff_set = set1.symmetric_difference(set2)
print(sym_diff_set) # 输出 {1, 2, 4, 5}
四、集合的常用方法
- issubset():判断是否为子集
- issuperset():判断是否为超集
- isdisjoint():判断两个集合是否有交集
set_a = {1, 2, 3}
set_b = {1, 2}
set_c = {4, 5}
print(set_b.issubset(set_a)) # 输出 True
print(set_a.issuperset(set_b)) # 输出 True
print(set_a.isdisjoint(set_c)) # 输出 True
五、遍历集合
由于集合是无序的,遍历时元素的顺序不确定。
for item in fruits:
print(item)
六、应用场景
集合在实际应用中非常广泛,例如:
- 去重:从列表中去除重复元素。
- 成员测试:快速检查某个元素是否存在于集合中。
- 集合运算:处理数据集之间的交集、并集、差集等操作。
# 去重示例
items = [1, 2, 2, 3, 4, 4, 5]
unique_items = set(items)
print(unique_items) # 输出 {1, 2, 3, 4, 5}