Python 数据结构详解——集合

本文深入解析Python中的集合数据结构,包括set和frozenset的特性与区别,以及如何利用集合进行去重、成员判断和迭代操作。同时,详细介绍了集合的数学运算,如交集、并集、差集和对称差集,并提供了丰富的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python 数据结构详解——集合

set对象官方文档:

在Python中,set对象是一组无序且hash值唯一的对象.常用于测试是否包含,去重,以及进行诸如交集,合集,差集,对称差集等数学运算.

正如其它的collection模块一样,set支持x in set, len(set)以及for x in set操作.作为一个无序的集合,set不会记录元素的位置或者插入顺序.由此,set不支持索引,切片或者其它序列行为.

目前有两种内置的set类型,set和frozenset.set是可变的——可以使用add()和move()方法改变内容.由于是可变的,set对象没有hash值,不能作为字典的关键字或者另一个set的元素.frozenset是不可变以及可hash的——它的内容在创建后不能改变;它就可以作为字典的key或者另一个set的元素.
set和frozenset使用方式大多是一样的.他们支持以下操作:

len(s)  # 返回元素的个数
x in s  # 判断x是否在s中
isdisjoint(other)  # 如果和其它的集合交集为空,则返回True

# 是否为子集的判断
set <= other
set < other
set >= other
set > other

set | other | ...  # 返回并集
set & other & ...  # 返回交集
set - other - ...  # 返回在set中,但不在其它集合中的元素
set ^ other  # 返回仅在set或者other中的元素

可以通过如下方式更新set:

set |= other | other | ...  # 将其它集合的元素添加到set中
set &= other & ...  # 将交集更新set
set -= other | ...  # 更新set,去除set中包含在other中的元素
set ^= other  # 更新set,保存仅在set或者other中的元素
add()  # 添加元素
remove()  # 删除元素, 没有该元素则报错
discard()  # 如果元素在集合中,则删除元素
pop()  # 任意删除一个元素,集合为空则报错
clear()  # 删除所有元素

使用示例

去重,成员判断,迭代

a = [1,2,3,1,5,2]
a_s = set(a)

print(f'a: {a}')
print(f'a_s: {a_s}')
print(f'len(a_s): {len(a_s)}')
print(f'1 in a_s: {1 in a_s}')
print(f'1 in a_s: {4 in a_s}')
a: [1, 2, 3, 1, 5, 2]
a_s: {1, 2, 3, 5}
len(a_s): 4
1 in a_s: True
1 in a_s: False
for s in a_s:
    print(s, end=', ')
1, 2, 3, 5, 

集合运算

sa = {1,2,3,4,5}
sb = {3,4,5,6,7}
sc = {8,9,0}

是否重叠(交集是否为空)

print(f'sa和sb交集是否为空:{sa.isdisjoint(sb)}')
print(f'sa和sc交集是否为空:{sa.isdisjoint(sc)}')
sa和sb交集是否为空:False
sa和sc交集是否为空:True
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值