Set(集合)是Python中一种非常有用的内置数据类型,它提供了高效的成员检测和消除重复元素的功能。本文将带你全面了解Python中的set(),从基础概念到高级用法。
Set是Python中的一种无序、可变、不重复元素的集合数据类型。它类似于数学中的集合概念,支持并集、交集、差集等操作。
# 创建一个set
fruits = {'apple', 'banana', 'orange', 'apple'}
print(fruits) # 输出: {'banana', 'orange', 'apple'} (重复的'apple'被自动去除)
{}
colors = {'red', 'green', 'blue'}
set()
构造函数numbers = set([1, 2, 3, 4, 5]) # 从列表创建
letters = set("hello") # 从字符串创建,结果为 {'h', 'e', 'l', 'o'}
squares = {x**2 for x in range(10)}
fruits = {'apple', 'banana'}
fruits.add('orange') # 添加单个元素
fruits.update(['kiwi', 'mango']) # 添加多个元素
fruits.remove('banana') # 如果元素不存在会引发KeyError
fruits.discard('kiwi') # 安全删除,元素不存在也不会报错
popped = fruits.pop() # 随机删除并返回一个元素
fruits.clear() # 清空集合
if 'apple' in fruits:
print("苹果在集合中")
for fruit in fruits:
print(fruit)
Set支持丰富的数学集合运算:
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
# 并集
print(a | b) # {1, 2, 3, 4, 5, 6}
print(a.union(b)) # 同上
# 交集
print(a & b) # {3, 4}
print(a.intersection(b)) # 同上
# 差集
print(a - b) # {1, 2}
print(a.difference(b)) # 同上
# 对称差集(只在a或b中,但不同时在两者中)
print(a ^ b) # {1, 2, 5, 6}
print(a.symmetric_difference(b)) # 同上
方法 | 描述 |
---|---|
len(s) | 返回集合元素个数 |
copy() | 返回集合的浅拷贝 |
isdisjoint(other) | 如果两个集合没有共同元素返回True |
issubset(other) | 检查是否是other的子集 |
issuperset(other) | 检查是否包含other的所有元素 |
Python还提供了frozenset类型,它是不可变的集合,可以作为字典的键或另一个集合的元素。
immutable = frozenset([1, 2, 3])
unique_list = list(set(duplicate_list))
if item in my_set: # O(1)时间复杂度
# do something
# 找出两个列表的共同元素
common = set(list1) & set(list2)
# 筛选出只出现一次的元素
unique_elements = set(all_elements) - set(duplicate_elements)
Python的set是一种强大的数据结构,特别适合需要快速成员检测和去重的场景。通过掌握set的基本操作和集合运算,你可以编写出更简洁、高效的Python代码。
希望这篇教程对你有所帮助!如果有任何问题,欢迎在评论区留言讨论。