python中set的用处
python中有很多不同的数据结构,比如list,tuple,set,dic等,为什么我要单独讲set呢。
因为set是一个比较容易被遗忘的数据结构,不光在python中,在C++中也一样,反正我是很少用set。但是用了之后发现set其实很强大的。下面就介绍一下set比较牛逼的几个用处:
找出两个列表中相同的数据
第一反应就是遍历一个列表,拿到所有数据然后再判断在不在第二个列表里。代码如下:
def main(): list1=[1,2,3,4,5] list2=[3,4,5,6,7] list3=[] for each in list1: if each in list2: list3.append(each) print list3 if __name__ == '__main__': main()
如果用set的话,用intersetion()很容易就搞定了,它可以得到两个set的交集
def main(): list1=[1,2,3,4,5] list2=[3,4,5,6,7] s1,s2=set(list1),set(list2) list3=list(s1.intersection(s2)) print list3 if __name__ == '__main__': main()
同样的方法还有:
s1.union(s2),用来得到两个set的并集。即两个list里所有元素的合集。
s1.difference(s2), 用来得到两个set的差集。即在s1中存在,但在s2中不存在的集合。
s1.symmetric_difference(s2), 它相当于s1.union(s2)-s1.intersection(s2)。即s1和s2中不重复的元素的合集。
作者:裸奔的小鸟
出处: http://www.cnblogs.com/streakingBird/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。