python大作战之集合

首先介绍下集合的两个主要作用:

1:去重------把一个列表变成一个集合,就自动去重了

2:关系测试------测试两组数据之间的交集、差集、并集等关系

集合作用一:去重

我们直接用代码来展示

>>> list1=[3,6,3,6,2,4,76,66,3,67,7]
>>> list2=set(list1)
>>> print(list2)
{2, 3, 4, 66, 6, 67, 7, 76}
从上面的代码可以看出,list1中有多个重复的元素,如果在没有学习集合之前,用之前学过的方法可能需要借助for循环来解决

但是利用集合就直接可以解决元素重复的问题。

另外,对于上面的代码,也可以直接这样解决:

>>> list1=[3,6,3,6,2,4,76,66,3,67,7,2]
>>> list3=set([3,6,3,6,2,4,76,66,3,67,7,2])
>>> print(list3)
{2, 3, 4, 66, 6, 67, 7, 76}
这个只是替换了原先的变量。

集合作用二:关系测试

a:交集

我们也直接通过代码来解释

>>> list1={3,6,3,6,2,4,76,66,3,67,7,2,4}
>>> list2={5,6,4,8,5,7,9,0,4,6,8,43,33}
>>> list3=list1.intersection(list2)
>>> print(list3)
{4, 6, 7}
对于集合的交集,主要是取list1和list2共有的部分元素

b:并集

同样先用代码来给大家演示

>>> list1={3,6,3,6,2,4,76,66,3,67,7,2,4}
>>> list2={5,6,4,8,5,7,9,0,4,6,8,43,33}
>>> list3=list1.union(list2)
>>> print(list3)
{0, 33, 2, 3, 4, 66, 6, 67, 7, 5, 8, 9, 76, 43}
对于集合的并集,主要是把list1和list2中共有的元素先去重,然后把两个集合的元素合并

c:差集

先用代码来给大家演示

>>> list1={3,6,3,6,2,4,76,66,3,67,7,2,4}
>>> list2={5,6,4,8,5,7,9,0,4,6,8,43,33}
>>> list3=list1.difference(list2)
>>> print(list3)
{2, 67, 3, 66, 76}
对于集合的差集,主要是把list1里有的元素,但是在list2中没有的元素输出出来

反过来,如果是list3=list2.difference(list1)呢,我们来看下代码

{0, 33, 5, 8, 9, 43}
同样是把list2中有的元素,但是list1中没有的元素输出出来

d:子集

话不多说,直接上代码

>>> list1=[3,6,3,6,2,4,76,66,3,67,7,2,4]
>>> list5={3,6,2}
>>> print(list5.issubset(list1))
True
对于集合的子集,主要是包含关系,从上面的代码可知,list5的元素在list1中都有,相当于list1是父类,list5是子类,

并且,子集的操作只返回true或者false,如果不是包含关系或者父类和子类的关系那就返回false

>>> list1=[3,6,3,6,2,4,76,66,3,67,7,2,4]
>>> list4={11,55,33}
>>> print(list4.issubset(list1))
False
e:差集

>>> list1={1,2,3,4}
>>> list2={3,4,5,6}
>>> print(list1.symmetric_difference(list2))
{1, 2, 5, 6}
对于集合的差集,主要去重两个集合重复的元素,并把剩余元素合并的操作

f:交集

>>> list1={1,2,3,4}
>>> list2={3,4,5,6}
>>> print(list1.isdisjoint(list2))
False
对于集合的交集,如果两个集合中有相同的元素,那么将返回false,false的意思是它们有相同的元素

如果返回true,就是没有交集


今天给大家分享了集合中的一些关系测试和最有特点的去重操作,谢谢






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值