例如:
- a = [1,0,2]
- b = [0,0,0]
- x = [k for k in a if k in b]
-
运行,得到结果为[0]
- a = [1,0,2]
- b = [0,0,0]
- x = [k for k in b if k in a]
-
这个代码 的结果将是[0,0,0]
这两个代码的区别主要是遍历的list不同。
不过注意实际上[k for k in b if k in a]这个代码的底层功能就是生成一个允许有重复元素的list,所以只能实现找到相同元素的功能,不能用来获得a与b中①重复的元素都有哪些和②重复元素的个数,因为a、b中重复的元素0,在b中不止一个,所以a和b的顺序交换就会得到不同的结果。
可以用以下函数进一步找到a与b重复元素的个数
- x = set(x)
-
set是无重复的,所以这个函数可以将x变成无重复的数列,进而获得重复元素个数
比如:
- list_a = [1,2,3,4]
- list_b = [3,4,5,6,7]
-
用函数
- set_c = set(list_a) & set(list_b)
- list_c = list(set_c)
-
可以得到:
- list_c = [3,4]
-
不过同样的,如上一小节所说,set里的元素是无重复的,所以这里取完交集以后得到的队列里的元素也都是无重复的
进一步的,我们利用好x = [k for k in b if k in a]这样的语句,可以判断两个列表中不同的值
先举两个示例list:
- list1 = ['张三', '李四', '王五', '老二']
- list2 = ['张三', '李四', '老二', '王七']
-
两个list都存在的就如上一章一样用这行代码:
- a = [x for x in list1 if x in list2]
-
寻找两个list中的不同元素就用这两行代码:
(如果学过数据库,相信大家都能理解。a是两个list中的交集,list1+list2是两个list中的并集,并集减交集,显然就是两个list中的不同的元素)
- a = [x for x in list1 if x in list2]
- b = [y for y in (list1 + list2) if y not in a]
-
进一步的,还可以写出在list1中而不在list2中的元素
- c = [x for x in list1 if x not in list2]
-
- d = [y for y in list2 if y not in list1]
-
运行结果: