python中的集合
Python中的集合(Set)是一个无序的、不包含重复元素的数据结构。集合主要用于进行数学上的集合操作,如并集、交集、差集和对称差集等。集合是由花括号{}
创建的,但需要注意的是,在创建空集合时不能使用{}
(这会被解释为空字典),而应该使用set()
。
集合的特点
- 无序性:集合中的元素是无序的,因此你不能通过索引来访问集合中的元素。
- 唯一性:集合中的元素是唯一的,自动过滤重复元素。
- 不可变性(指元素不可变,但集合本身是可变的):集合中的元素必须是不可变类型,如整数、浮点数、字符串、元组等。但集合本身是可变的,可以添加或删除元素。
创建集合
# 创建一个空集合
my_set = set()
# 创建一个包含一些元素的集合
my_set = {1, 2, 3, 4, 5}
# 注意:重复元素会被自动过滤
my_set = {1, 2, 2, 3, 4, 4, 5} # 结果仍然是 {1, 2, 3, 4, 5}
# 尝试使用可变类型(如列表)作为集合元素会导致TypeError
# my_set = {1, 2, [3, 4]} # TypeError: unhashable type: 'list'
集合操作
- 并集:使用
|
或union()
方法。
set1 = {1, 2, 3}
set2 = {3, 4, 5}
result = set1 | set2 # 或 result = set1.union(set2)
print(result) # 输出: {1, 2, 3, 4, 5}
- 交集:使用
&
或intersection()
方法。
result = set1 & set2 # 或 result = set1.intersection(set2)
print(result) # 输出: {3}
- 差集:使用
-
或difference()
方法。
result = set1 - set2 # 或 result = set1.difference(set2)
print(result) # 输出: {1, 2}
- 对称差集:使用
^
或symmetric_difference()
方法。
result = set1 ^ set2 # 或 result = set1.symmetric_difference(set2)
print(result) # 输出: {1, 2, 4, 5}
集合的方法
add(element)
: 向集合中添加一个元素。update(other)
: 用另一个集合中的元素更新当前集合(即求并集后更新当前集合)。remove(element)
: 从集合中移除一个元素。如果元素不存在,则抛出KeyError
。discard(element)
: 从集合中移除一个元素。如果元素不存在,则不执行任何操作,也不抛出异常。pop()
: 随机移除集合中的一个元素并返回它。如果集合为空,则抛出KeyError
。clear()
: 移除集合中的所有元素。
集合的遍历
你可以遍历集合中的元素,但由于集合是无序的,所以遍历的顺序可能是不确定的。
for element in my_set:
print(element)
集合是Python中非常有用的数据结构,特别是在需要执行数学上的集合操作或需要快速检查元素是否存在时。