python学习笔记13:集合

本文深入讲解集合的特点,如去重、无序性及如何通过集合进行数据去重。此外,详细介绍了集合之间的关系测试,包括交集、并集、差集、子集、父集、对称差集和检查交集的存在。同时,文章还提供了集合的增删改查操作实例。

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

集合特点:
1.天生去重:把一个列表变成集合,就自动去重了
2.关系测试:测试两组数据之间的交集、差集、并集等关系

集合的特征:
1.大括号:{}
2.数据类型:表示为set
3.无序

列表去重举例:

list_1 = [1,4,5,7,3,6,7,9] # 想对列表去重,就先将它变成集合
list_1 = set(list_1)
print(list_1,type(list_1)) #此时打印出来是已经去重的,且是无序的

list_2 = set([2,6,0,66,22,8,4])
print(list_1,list_2)

打印结果:

{1, 3, 4, 5, 6, 7, 9} <class ‘set’>
Traceback (most recent call last):
{1, 3, 4, 5, 6, 7, 9} {0, 2, 66, 4, 6, 8, 22}

集合的关系测试

1.交集:intersection()

list_1 = set([1,4,5,7,3,6,7,9])
list_2 = set([2,6,0,66,22,8,4])

print(list_1.intersection(list_2))

{4, 6}

1-1.交集的运算符:&

list_1 = set([1,4,5,7,3,6,7,9])
list_2 = set([2,6,0,66,22,8,4])

print(list_1 & list_2)

{4, 6}

2.并集:union()

list_1 = set([1,4,5,7,3,6,7,9])
list_2 = set([2,6,0,66,22,8,4])

print(list_1.union(list_2))

{0, 1, 2, 3, 4, 5, 6, 7, 66, 9, 8, 22}

2-1.并集的运算符:|

list_1 = set([1,4,5,7,3,6,7,9])
list_2 = set([2,6,0,66,22,8,4])

print(list_1 | list_2)

{0, 1, 2, 3, 4, 5, 6, 7, 66, 9, 8, 22}

3.差集:difference(),对于集合1,去掉和集合2交集的部分,展示剩下的

list_1 = set([1,4,5,7,3,6,7,9])
list_2 = set([2,6,0,66,22,8,4])

print(list_1.difference(list_2)) # 在1中不带2
print(list_2.difference(list_1)) # 在2中不带1

{1, 3, 5, 7, 9}
{0, 2, 66, 8, 22}

3-1.差集的运算符:-

list_1 = set([1,4,5,7,3,6,7,9])
list_2 = set([2,6,0,66,22,8,4])

print(list_1 - list_2) # 在1中不带2

{1, 3, 5, 7, 9}

4.子集:issubset(),判断是否是子集

list_1 = set([1,4,5,7,3,6,7,9])
list_3 = {1,3,7}   #大括号代表集合

print(list_3.issubset(list_1))   #判断list_3是不是list_1的子集


True

5.父集:issupperset(),判断是否是父集

list_1 = set([1,4,5,7,3,6,7,9])
list_3 = {1,3,7}

print(list_1.issuperset(list_3))     #判断list_1是不是list_3的父集

True

6.对称差集:symmetric_difference(),去掉了交集,展示两者剩下的

list_1 = set([1,4,5,7,3,6,7,9])
list_2 = set([2,6,0,66,22,8,4])

print(list_1.symmetric_difference(list_2))

{0, 1, 2, 66, 3, 5, 7, 8, 9, 22}

7-1.对称差集的运算符:^

list_1 = set([1,4,5,7,3,6,7,9])
list_2 = set([2,6,0,66,22,8,4])

print(list_1 ^ list_2)

{0, 1, 2, 66, 3, 5, 7, 8, 9, 22}

7.查看二者是否有交集:isdisjoint(),如果二者没有交集,就返回True,否则返回False


list_1 = set([1,4,5,7,3,6,7,9])
list_2 = set([2,6,0,66,22,8,4])
list_3 = {1,3,7}

print(list_2.isdisjoint(list_1))
list_4 = [5,6,8]
print(list_3.isdisjoint(list_4))

True
False

对集合的增删改查

1.增:add(),添加一项

list_1 = set([1,4,5,7,3,6,7,9])

list_1.add(999)
print(list_1) # 位置是无序的

{1, 3, 4, 5, 6, 7, 999, 9}

2.增:update([x1,x2,x3]),添加多项

list_1 = set([1,4,5,7,3,6,7,9])

list_1.update([888,777,555])
print(list_1)

{1, 3, 4, 5, 6, 7, 999, 9, 777, 555, 888}

3.删:pop(),随机删除,删除并把删除的这个元素返回

list_1 = set([1,4,5,7,3,6,7,9])

print(list_1.pop())

1

4.删:discard(),删除不存在的元素不会报错

list_1 = set([1,4,5,7,3,6,7,9])

list_1.discard(222)
print(list_1)

{1, 3, 4, 5, 6, 7, 9}

5.删:remove(),删除一项,删除不存在的元素会报错

list_1 = set([1,4,5,7,3,6,7,9])

list_1.remove(5)   #直接删除集合list_1中的5
print(list_1)

list_1.remove(222)    #删除不存在的元素会报错
print(list_1)

结果1:
Traceback (most recent call last):
{1, 3, 4, 6, 7, 9}

结果2:
File “D:/CangHaiBang/study/20.集合.py”, line 82, in
list_1.remove(222) #删除不存在的元素会报错
KeyError: 222

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值