查阅网上资料,获取python中两个list的交集、并集、差集主要有两种不同的方法,具体哪种方法的效率高还未测试。两种方法具体如下:
测试用例
x=['a', 'c', 'b', 'e', 'd'] y=['b','d','x','y','z']
方法一
ps:方法一主要借助集合的特性,先将列表转换为集合,然后简便的获取交集、并集、差集,最后再将结果转换为列表即可。
x=set(x) y=set(y)
1、交集
x & y
或
x.intersection(y)
2、并集
x | y
或
x.union(y)
3、差集(即在x中有,在y中没有的)
x – y
或
x.difference(y)
4、XOR 异或(即不同时在两个集合的元素)
x ^ y
方法二
1、交集
x=['a', 'c', 'b', 'e', 'd'] y=['b','d','x','y','z'] tmp = [val for val in x if val in y] print tmp
参考资料:
1、http://www.cnblogs.com/bears/archive/2012/02/02/2335535.html
2、http://www.yihaomen.com/article/python/323.htm