python 基础数据结构 集合Set

集合(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):将当前集合更新为与另一个集合的对称差集

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值