Python之我们有交集吗?

牛郎和织女,相望无交集!---幺猫说【5min】

集合

集合,是一个在高中时代接触到的数学概念(当然,现在的话,也许小学生就已经接触了)。

集合,一般被定义为,由一个或多个元素构成的整体。比如,一个班的人构成一个集合,中国人可以构成一个集合。说白一点,把一堆元素放在一起,就是集合了。至于元素是什么,并不具体规定。

但是,集合有一些规定,主要是:确定性,比如张三要么在三班要么在四班,确定无疑;唯一性,比如一个班里不能有两个相同的同学(同名不算),这个好理解,毕竟没有两个完全一样的人;无序性,比如出去集合的时候,如果不做要求,各位同学的地位是一样的,没有先后之后(除非像体育课那样,有个高矮顺序,但那也只是为了方便)。

Python中的集合(set),也是一种数据结构,但其特性,与上面说的这些,没有什么不同。回忆一下,数学里,是用了一对{}来表示集合的,Python里也沿用了这种标记。

这就麻烦了,上节刚讲到,字典也是用了一对大括号,这怎么区分?放心,Python作为一门高级语言,已经不是小孩子了,完全可以自己处理这种问题的,相信它就好。况且,虽然符号一样,但内容完全不同啊!

Python集合

上面说到,集合元素是无序的、唯一的、确定的,那么怎么理解呢?仍然以Hello World为例来看一下,

In [1]: set1 = set('Hello World') # 定义集合

In [2]: set1
Out[2]: {' ', 'H', 'W', 'd', 'e', 'l', 'o', 'r'}

可以清楚地看到,set1的结果里,完全打乱了Hello World的顺序(无序性),而且去掉了重复的字母(唯一性),剩下的都是无异议(确定性)的。稍微仔细点,还能看出来,set1里面的顺序都重新排列了(可以查下ASCII码表,正好是按这个表的顺序)。

集合这个概念,在中学的范畴里,学得并不深入,但也够日常使用和理解了。我们来看一下,集合的几个常见操作,在Python中是如何体现的。

集合运算

集合从样子上看,除了用了和字典一样的大括号,其他更像是列表和元组。这种相似性,体现在集合的遍历上,也可以用for ... in ...的语法(这里可以自己尝试一下)。除此之外,我们还知道,集合更多的操作是:并集、交集、差集。还是来看例子

In [12]: set2 = set('Hello') # 定义集合2
In [13]: set2
Out[13]: {'H', 'e', 'l', 'o'}

In [14]: set3 = set('World') # 定义集合3
In [15]: set3
Out[15]: {'W', 'd', 'l', 'o', 'r'}

In [17]: set2 | set3 # 并集,即元素在set2中或在set3中或在set2和set3中都有
Out[17]: {'H', 'W', 'd', 'e', 'l', 'o', 'r'}

In [18]: set2 & set3 # 交集,即元素同时在set2和set3中
Out[18]: {'l', 'o'}

In [19]: set2 - set3 # 差集,即元素只在set2中且不在set3中
Out[19]: {'H', 'e'}

回想当初刚学集合时,还得肉眼去数着做题,数来数去,还怕漏了,相比之下,这个是不是方便了很多很多?最关键的是,只要不写错,就不会出错!

下次,如果再有问,谁谁之间,有没有交集,就这么来一下~

集合还是那个集合,依旧是,新酒装旧瓶!

完🐈

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值