无序的、不重复的数据结构,非常适合用于成员关系测试、消除重复项以及集合运算(如并集、交集、差集等)。
创建集合
可以使用花括号 或 set() 构造函数来创建集合。
# 使用花括号创建集合
my_set = {1, 2, 3, 4, 5}
print(my_set) # 输出: {1, 2, 3, 4, 5}
# 使用 set() 构造函数创建集合
another_set = set([1, 2, 3, 4, 5])
print(another_set) # 输出: {1, 2, 3, 4, 5}
添加元素
可以使用 add() 方法向集合中添加元素。
my_set = {1, 2, 3}
my_set.add(4)
print(my_set) # 输出: {1, 2, 3, 4}
删除元素
可以使用 remove()、discard() 和 pop() 方法删除元素。
my_set = {1, 2, 3, 4, 5}
# 使用 remove() 删除指定元素
my_set.remove(3)
print(my_set) # 输出: {1, 2, 4, 5}
# 使用 discard() 删除指定元素(不会抛出错误)
my_set.discard(6) # 不会报错
print(my_set) # 输出: {1, 2, 4, 5}
# 使用 pop() 删除并返回任意一个元素
popped_element = my_set.pop()
print(popped_element) # 输出: 1(或集合中的任意一个元素)
print(my_set) # 输出: {2, 4, 5}
集合运算
集合支持并集、交集、差集和对称差集等运算。
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
# 并集
print(set1.union(set2)) # 输出: {1, 2, 3, 4, 5, 6}
print(set1 | set2) # 输出: {1, 2, 3, 4, 5, 6}
# 交集
print(set1.intersection(set2)) # 输出: {3, 4}
print(set1 & set2) # 输出: {3, 4}
# 差集
print(set1.difference(set2)) # 输出: {1, 2}
print(set1 - set2) # 输出: {1, 2}
# 对称差集
print(set1.symmetric_difference(set2)) # 输出: {1, 2, 5, 6}
print(set1 ^ set2) # 输出: {1, 2, 5, 6}
检查子集和超集
可以使用 issubset() 和 issuperset() 方法检查子集和超集关系。
set1 = {1, 2, 3}
set2 = {1, 2, 3, 4, 5}
print(set1.issubset(set2)) # 输出: True
print(set2.issuperset(set1)) # 输出: True
集合的长度
可以使用 len() 函数获取集合的长度。
my_set = {1, 2, 3, 4, 5}
print(len(my_set)) # 输出: 5
成员检查
可以使用 in 操作符检查集合中是否存在某个元素。
my_set = {1, 2, 3, 4, 5}
print(3 in my_set) # 输出: True
print(6 in my_set) # 输出: False
集合推导式
集合推导式类似于列表推导式,用于创建集合。
# 使用集合推导式创建集合
squared = {x * x for x in range(10)}
print(squared) # 输出: {0, 1, 4, 9, 16, 25, 36, 49, 64, 81}
集合的不可变版本(frozenset)
frozenset 是一个不可变的集合,可以作为字典的键。
# 创建一个 frozenset
frozen = frozenset([1, 2, 3, 4, 5])
print(frozen) # 输出: frozenset({1, 2, 3, 4, 5})
# 使用 frozenset 作为字典的键
my_dict = {frozen: "frozen set"}
print(my_dict) # 输出: {frozenset({1, 2, 3, 4, 5}): 'frozen set'}
集合的更新操作
可以使用
- update()
- intersection_update()
- difference_update()
- symmetric_difference_update() 方法更新集合。
set1 = {1, 2, 3}
set2 = {3, 4, 5}
# 更新集合为并集
set1.update(set2)
print(set1) # 输出: {1, 2, 3, 4, 5}
# 更新集合为交集
set1.intersection_update(set2)
print(set1) # 输出: {3, 4, 5}
# 更新集合为差集
set1.difference_update(set2)
print(set1) # 输出: {1, 2}
# 更新集合为对称差集
set1.symmetric_difference_update(set2)
print(set1) # 输出: {3, 4, 5}
集合的清空
可以使用 clear() 方法清空集合。
my_set = {1, 2, 3, 4, 5}
my_set.clear()
print(my_set) # 输出: set()
集合的复制
可以使用 copy() 方法复制集合。
my_set = {1, 2, 3, 4, 5}
copied_set = my_set.copy()
print(copied_set) # 输出: {1, 2, 3, 4, 5}
集合的 issubset() 和 issuperset()
可以使用 issubset() 和 issuperset() 方法检查子集和超集关系。
set1 = {1, 2, 3}
set2 = {1, 2, 3, 4, 5}
print(set1.issubset(set2)) # 输出: True
print(set2.issuperset(set1)) # 输出: True
集合的 isdisjoint()
可以使用 isdisjoint() 方法检查两个集合是否没有交集。
set1 = {1, 2, 3}
set2 = {4, 5, 6}
set3 = {3, 4, 5}
print(set1.isdisjoint(set2)) # 输出: True
print(set1.isdisjoint(set3)) # 输出: False
← Previous postPython中的Tuple元组常见和高级用法
Next post →Python中的List列表常见和高级用法