集合(Set)是一种无序且不重复的数据集合,它可以用来去重、交集、并集等操作
可变集合(set)和不可变集合(frozenset)。可变集合是可以被修改的,而不可变集合则是一旦创建就不能修改的
元素必须是可哈希的(immutable),也就是说不能是列表、字典等可变类型
frozenset 也是 Python 内置函数,用于创建一个不可变的集合。与 set 不同,frozenset 中的元素是不可变的,因此可以用作字典的键值
(1)创建方式
# 创建set
my_set = {1, 2, 3}
print(my_set) # {1, 2, 3}
# 创建空的set
empty_set = set()
print(empty_set) # set()
(2)新增元素
add(element): 向集合中添加元素,若元素已存在则不进行任何操作。
update(iterable): 将一个可迭代对象中的元素添加到集合中,若元素已存在则不进行任何操作。可迭代对象可以是列表、元组、集合等。
union(iterable): 将集合和一个可迭代对象中的元素合并,返回一个新的集合,不改变原有的集合。可迭代对象可以是列表、元组、集合等
s = {1, 2, 3}
s.add(4) # {1, 2, 3, 4}
s.update([4, 5, 6]) # {1, 2, 3, 4, 5, 6}
s.union([7, 8, 9]) # {1, 2, 3, 4, 5, 6, 7, 8, 9}
add()和update()方法会改变原有的集合,而union()方法则返回一个新的集合
|= 是 set 的原地并集操作符,等价于使用 update 方法进行操作
set1 = {1, 2, 3}
set2 = {3, 4, 5}
# 可以使用 |= 将 set1 和 set2 进行合并,并将结果存储在 set1 中:
set1 |= set2
# 执行上述代码后,set1 中的值为 {1, 2, 3, 4, 5}。与以下代码等价:
set1.update(set2)
(3)删除元素
remove(elem):从集合中删除元素elem,如果元素不存在,则抛出KeyError异常。
discard(elem):从集合中删除元素elem,如果元素不存在,则不进行任何操作。
pop():随机删除并返回集合中的一个元素,如果集合为空,则抛出KeyError异常。
clear():从集合中删除所有元素
假设有一个set对象my_set,包含元素{1, 2, 3, 4, 5},可以使用如下代码进行元素的删除操作:
my_set.remove(3) # 从集合中删除元素3
my_set.discard(4) # 从集合中删除元素4
my_set.pop() # 随机删除并返回集合中的一个元素
my_set.clear() # 从集合中删除所有元素
在进行删除操作时,应该确保被删除的元素确实存在于集合中,否则可能会抛出异常或者导致意外的行为
(4)遍历方法
for循环遍历
pythonCopy code
lst = [1, 2, 3]
for i in lst:
print(i)
while循环遍历
lst = [1, 2, 3]
i = 0
while i < len(lst):
print(lst[i])
i += 1
列表解析遍历
lst = [1, 2, 3]
[i for i in lst]
map函数遍历
lst = [1, 2, 3]
map(lambda x: print(x), lst)
filter函数遍历
lst = [1, 2, 3]
filter(lambda x: print(x), lst)
迭代器遍历
lst = [1, 2, 3]
it = iter(lst)
while True:
try:
print(next(it))
except StopIteration:
break
(5)内置函数
union(other_set)或|:返回两个集合的并集。
intersection(other_set)或&:返回两个集合的交集。
difference(other_set)或-:返回两个集合的差集。
symmetric_difference(other_set)或^:返回两个集合的对称差集。
issubset(other_set):判断当前集合是否是另一个集合的子集。
issuperset(other_set):判断当前集合是否是另一个集合的超集。
intersection_update(other_set):将当前集合更新为与另一个集合的交集。
difference_update(other_set):将当前集合更新为与另一个集合的差集。
symmetric_difference_update(other_set):将当前集合更新为与另一个集合的对称差集
8131

被折叠的 条评论
为什么被折叠?



