集合(Set)
创建集合
使用花括号
{}(注意:空集合不能用{})
# 创建包含元素的集合
my_set = {1, 2, 3, 'hello', (4, 5)}
print(my_set) # 输出顺序可能与输入不同,例如 {1, 2, 3, (4, 5), 'hello'}
# 创建空集合
empty_set = set()
print(type(empty_set)) # <class 'set'>
print(empty_set) # set()使用
set()构造函数:
# 从字符串创建 (字符去重)
char_set = set("hello")
print(char_set) # {'l', 'o', 'e', 'h'} 或类似顺序
# 从列表创建 (元素去重)
list_set = set([1, 2, 2, 3, 3, 3])
print(list_set) # {1, 2, 3}
# 从元组创建
tuple_set = set((1, 2, 3))
print(tuple_set) # {1, 2, 3}
# 创建空集合
empty_set = set()基本操作
添加元素
删除元素:
remove(element):删除指定元素,如果元素不存在,会抛出 KeyError 异常
discard(element): 删除指定元素。如果元素不存在,不会抛出异常,静默处理。
pop(): 随机移除并返回集合中的一个元素。因为集合无序,所以无法预测移除哪个元素。 如果集合为空,则抛出KeyError。
clear(): 清空集合,使其变为空集合。
成员检查
使用 in 和 not in 操作符。这是集合非常高效的操作,时间复杂度接近 O(1)。
获取集合大小
集合运算
集合支持丰富的数学集合运算,这些运算可以使用方法或操作符。
并集(Union):包含两个集合中所有不重复的元素。
交集(Intersection):包含同时存在于两个集合中的元素。
差集(Difference):包含在第一个集合中但不在第二个集合中的元素。
对称差集(Symmetric Difference):包含在两个集合中但不同时存在于两者中的元素。
子集与超集判断
set1.issubset(set2)或set1 <= set2: 判断set1是否是set2的子集。set1.issuperset(set2)或set1 >= set2: 判断set1是否是set2的超集。set1 < set2: 判断set1是否是set2的真子集(子集且不相等)。set1 > set2: 判断set1是否是set2的真超集(超集且不相等)。
不相交判断:如果两个集合没有交集(交集为空),返回
True。
集合推导式
类似于列表推导式,用于简洁地创建集合。
不可变集合
frozenset是set的不可变版本。创建后,使其元素不能被修改(不能添加、删除元素)。
因为不可变,所以
frozenset本身是可哈希的,这意味着它可以作为字典的键或另一个集合的元素,而普通set不行。创建方式:
frozenset(iterable)。支持除了修改操作(
add,remove等)之外的所有集合运算(union,intersection,in等)
最后更新于