python集合的复习(总结于B站Alex)

一.定义和作⽤

集合跟我们学的列表有点像,也是可以存⼀堆数据,不过它有⼏个独特的特点,令其在整个 Python 语⾔中占有⼀ 席之地:
1. ⾥⾯的元素不可变,代表你不能存⼀个 list dict 在集合⾥,字符串、数字、元组等不可变类型可以存
2. 天⽣去重,在集合⾥没办法存重复的元素 ct'                                                                                3.无序,不像列表⼀样通过索引来标记在列表中的位置 ,元素是⽆序的,集合中的元素没有先后之分,如集合{3,4,5} {3,5,4} 算作同⼀个集合
4. 关系测试(作⽤)
基于上⾯的特性,我们可以⽤集合来⼲ 2 件事, 去重和关系运算

二.语法

创建
创建集合
注意也是 {} ,但不是 dict, 不是 k,v 结构
>>> a = {1,2,3,4,2,'alex',3,'rain','alex'}
>>> a
{1, 2, 3, 4, 'alex', 'rain'}
由于它是天⽣去重的,重复的值你根本存不进去
帮列表去重
帮列表去重最快速的办法是什么? 就是把它转成集合,去重完,再转回列表
>>> b
[1, 2, 3, 4, 2, 'alex', 3, 'rain', 'alex']
>>> set(b)
{1, 2, 3, 4, 'alex', 'rain'}
>>>
>>> b = list(set(b)) #⼀句代码搞定
>>> b
[1, 2, 3, 4, 'alex', 'rain']

>>> a = {1, 2, 3, 4, 5}
>>> a.add(9)
>>> a
{1, 2, 3, 4, 5, 9}

>>> a
{1, 2, 3, 4, 5, 9}
>>> 8 in a
False
>>> a
不能修改,⼀旦创建,不可修改⾥⾯的值
删除
>>> a.pop() # 随机删除⼀个值,并返回该值
2
>>> a.remove(3) # 删除3这个元素,若3不在,报KeyError
>>> a
{3, 4, 5}
>>> a.discard(8) # 删除指定的值 ,若该值不存在,do nothing.
>>> a.discard(9)
>>> a.discard(5)
>>> a
{3, 4}

三.关系测试

交集
{1,交集 2, 3, 4, 5,
>>> five_man_fight_1girl & girls_game # & 符号
{'BlackGirl', 'Alex'}
>>> five_man_fight_1girl.intersection(girls_game)
{'BlackGirl', 'Alex'}

并集

>>> five_man_fight_1girl | girls_game # | 符号
{'Celina', 'Alex', 'Egon', 'BlackGirl', 'peiqi', 'PyYu', 'OldVillageMaster',
'XiaoYun'}
>>> five_man_fight_1girl.union(girls_game)
{'Celina', 'Alex', 'Egon', 'BlackGirl', 'peiqi', 'PyYu', 'OldVillageMaster',
'XiaoYun'}
>>>

差集

>>> five_man_fight_1girl - girls_game # - 符号代表 差集 , only in five_man_fight_1girl
{'PyYu', 'peiqi', 'OldVillageMaster', 'Egon'}
>>> girls_game - five_man_fight_1girl # only in girls_game
{'Celina', 'XiaoYun'}
>>> five_man_fight_1girl.difference(girls_game)
{'PyYu', 'peiqi', 'OldVillageMaster', 'Egon'}

对差集

>>> five_man_fight_1girl ^ girls_game # ^ 符号, 把同时在2个电影⾥都出演过的⼈T出去
{'Celina', 'Egon', 'peiqi', 'PyYu', 'OldVillageMaster', 'XiaoYun'}
>>> five_man_fight_1girl.symmetric_difference(girls_game)
{'Celina', 'Egon', 'peiqi', 'PyYu', 'OldVillageMaster', 'XiaoYun'}

子集,父集

>>> five_man_fight_1girl.issubset(girls_game) # 是不是girls_game的字集, 即five_man...⾥
的每个值都在girls_game⾥存在
False
>>> five_man_fight_1girl.issuperset(girls_game) # 是不是girls_game的⽗集
False
测试后修改
three_some = {' ⾦⻆ ', ' 银⻆ ', ' ⿊姑娘 '}
four_p = {' ⾦⻆ ', ' 银⻆ '," ⿊姑娘 ", "XiaoYun"}
>>> four_p.difference(three_some) #
{'XiaoYun'}
>>> four_p.difference_update(three_some) # 把差集的结果赋值给four_p
>>> four_p
{'XiaoYun'}
>>> four_p
{'XiaoYun'}
>>> four_p.update(three_some) # 把合并后的结果赋值给four_p
>>> four_p
{'XiaoYun', '⾦⻆', '银⻆', '⿊姑娘'}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值