Python 基础 | 集合

本文介绍了Python集合的基本操作,包括创建、访问、添加元素、剔除元素以及集合间的交集、并集、补集和非交集运算。集合是一个无序且不重复的序列,常用于数据去重和集合运算。通过实例展示了如何使用add、update、remove、intersection、union、difference和symmetric_difference等方法进行操作。

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

  集合是一个 无序不重复 的序列。可以使用 {} 来创建,也可使用或set来将其他数据强制转换为集合。例如:

Set = {1, 3, 4, 'You', 'Me'}

注:

  1. 集合内的元素除了单元素之外仅支持元组。列表、字典、集合等其他类型的元素都会导致集合创建失败。
  2. 创建空集合必须使用set,使用{}创建的是空字典。

访问

  由于集合是一个无序不重复的序列,集合不能通过索引来访问。因此,可以通过循环获得集合中的元素:

Set = {1, 3, 4, 'You', 'Me'}
for ELE in Set:
    print('元素:', ELE)

执行结果:
元素:1
元素:3
元素:4
元素:You
元素:Me

提示:
可将集合转为列表或元组,然后利用索引访问元素。

添加

  添加一个元素:

Set = {1, 3, 4, 'You', 'Me'}
Set.add('Luo')
print(Set)

执行结果:{1, 3, 4, 'Luo', 'You', 'Me'}

  添加多个元素:

Set = {1, 3, 4, 'You', 'Me'}
ADD1 = [2, 6]
ADD2 = (5, 7)
ADD3 = {8, 9}
# 添加一个列表、元组或集合
Set.update(ADD1, ADD2, ADD3)
print(Set)

执行结果:{1, 2, 3, 4, 5, 6, 7, 8, 9, 'You', 'Me'}

剔除

  剔除一个元素:

Set = {1, 3, 4, 'You', 'Me'}
Set.remove(3) # 或 Set.discard(3)
print(Set)

执行结果:{1, 4, 'You', 'Me'}

交集

  取两个集合都含有的元素:

Set1 = {1, 3, 4, 'You', 'Me'}
Set2 = {1, 3, 4, 'Luo'}
Set = Set1 & Set2 # 或 Set = Set1.intersection(Set2)
print(Set)

执行结果:{1, 3, 4}

并集

  取两个集合的所有元素:

Set1 = {'You', 'Me'}
Set2 = {1, 3, 4, 'Luo'}
Set = Set1 | Set2 # 或 Set = Set1.union(Set2)
print(Set)

执行结果:{1, 3, 4, 'Luo', 'You', 'Me'}

补集

  取集合 1 中不含集合 2 的元素:

Set1 = {1, 3, 4, 'You', 'Me'}
Set2 = {1, 3, 4, 'Luo'}
Set = Set1 - Set2 # 或 Set = Set1.difference(Set2)
print(Set)

执行结果:{'You', 'Me'}

提示:
相对补集(差集):Set2 不为 Set1 的子集。
绝对补集:Set2 为 Set1 的子集。

非交集

  取集合 1 中有但集合 2 中没有 和 集合 2 中有但集合 1 中没有的所有元素的总和:

Set1 = {1, 3, 4, 'You', 'Me'}
Set2 = {1, 3, 4, 'Luo'}
Set = Set1 ^ Set2 # 或 Set = Set1.symmetric_difference(Set2)
print(Set)

执行结果:{'Luo', 'You', 'Me'}

运算

方法描述示例结果
len取集合长度len({1, 2})2
isdisjoint两个集合是否不相交{1, 2}.isdisjoint({2, 3})False
issubset集合 1 是否为集合 2 的子集{1, 2}.issubset({1, 2, 3})True
issuperset集合 2 是否为集合 1 的子集{1, 2, 3}.issuperset({2, 3})True

集合解析式

  与列表解析式类似,集合解析式是将一个可迭代对象(如列表)转换成集合的工具。示例:

Set = {i for i in range(10000000)}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洛的地理研学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值