今天我们要了解的是集合类型,也是我们要说的最后一个基本数据类型了,集合(set)数据类型很像字典的key,因为它不可以重复,而且无序, 但它不是映射对应关系,就像是没有value的字典,创建一个集合只能用函数set(),这些就是集合的基本特性,我们还是看几个例子来了解下set的使用:
集合的创建和值访问:
1 2 3 4 5 6 7 8 9 10 11 12 |
>>> set('helloworld') set(['e', 'd', 'h', 'l', 'o', 'r', 'w']) >>> for i in s1: ... print i ... e d h l o r w |
创建集合我们用set方法,我们传入一个字符串,就创建了一个集合类型, 可以看出生成的集合值是不重复的,helloworld有三个l,但集合自动删除重复,只保留一个元素,另外访问集合元素的方法我们可以用for循环来遍历一个集合的所有元素。
集合操作符:
集合的操作符跟我们上学时候的集合得概念一样,两个集合直接可以求交集,并集,对应到集合的操作符就是‘|’和‘&’,并集就是求出的新的集合每个元素都至少是其中一个集合中的成员,交集就是这个新集合同时属于这两个集合的成员,例如:
1 2 3 4 5 6 7 8 |
>>> s1 = set('helloworld') >>> s2 = set('hellouniverse') >>> s3 = s1 | s2 >>> s3 set(['e', 'd', 'i', 'h', 'l', 'o', 'n', 's', 'r', 'u', 'w', 'v']) >>> s4 = s1 & s2 >>> s4 set(['h', 'r', 'e', 'l', 'o']) |
集合的基本操作就是这些,可能有的小伙伴不知道集合用在哪里合适,其实还是要根据自己的实际情况,千万不要觉得某些数据类型没用,只能说暂时没用到而已,发明python的大神也不傻子,他肯定不会创造一个每个人都不会用的数据类型出来,为让大家更容易理解并应用,下面我说两个集合的应用场景。
集合常用的就是列表去重, 假设你有个列表,这个列表里有很多重复元素,你想快速删除重复元素,得到一个没有重复元素的列表,用set是最快的,最后再将set转成列表,就生成了一个没有重复元素的列表,如下:
1 2 3 4 5 6 7 8 9 |
>>> ld = ['a','b','a','c','d','f','d'] >>> ld ['a', 'b', 'a', 'c', 'd', 'f', 'd'] >>> t = set(ld) >>> t set(['a', 'c', 'b', 'd', 'f']) >>> nld = list(t) >>> nld ['a', 'c', 'b', 'd', 'f'] |
第二个应用场景是,假如你现在有两个比较大的列表A和B,现在的任务是找出包含在A列表但不在B列表中的元素,这个时候一般的做法可以用列表表达式来做:
(x for x in A if x not in B)
这个方法本身没什么问题,但前提就是如果列表的元素非常的多,这种方法就会非常慢,那我们可以换一种思路去解决,
set(A) – set(B)
这个思路是用集合的概念去解决,‘-’号是集合中的差补,就是求出的新集合只能属于集合A,但不属于集合B,这种方式要比第一种要快很多,有喜欢的小伙伴可以做个测试,给大家分享下测试结果,这篇就到这里,关于Python的数据类型我们就全部介绍完了,在这些基础上我们接下来要了解语句结构例如If/else,for循环语句等。
如果喜欢这系列文章,请大家帮忙转发,您的转发是我继续写的动力,谢谢。
1 |