可以直接食用的代码:
def duplicate_removal(self, A, B): return set(A).intersection(set(B))
Python如何提取两个列表的共同元素?也就是取两个集合的交集。除了常规的循环外,Python提供了一些更简洁更美的表达法,比如可以用列表解析的方法,或者用 Python 内置的集合运算。
比如已有如下两个列表,Python如何提取两个列表的共同元素?
[1, 2, 3, 4, 5]
和
[4, 5, 6, 7, 8]
希望能得到
[4, 5]
方法一,列表解析
可以用列表解析, List comprehension 下的方法:
A = [1, 2, 3, 4, 5] B = [4, 5, 6, 7, 8] print([x for x in A if x in B]) # [4, 5]
方法二,集合运算
还可以用Python 的集合(set)运算,s.intersection(t) 返回s与t的交集
A = [1, 2, 3, 4, 5] B = [4, 5, 6, 7, 8] print(set(A).intersection(set(B))) # {4, 5}
番外:笨重的方法(顺便看看不推荐使用):
lst1 = [11, 22, 33] lst2 = [22, 33, 44] a = set(lst1) # 转成元祖 b = set(lst2) c = (a & b) # 集合c和b中都包含了的元素 print('两个列表中相同的元素是:', end='') for i in c: print(i, end=' ') # fo循环实现方法 lst1 = [11, 22, 33] lst2 = [22, 33, 44] for i in lst1: if i in lst2: print(i, end=' ') # fo循环嵌套实现方法 lst1 = [11, 22, 33] lst2 = [22, 33, 44] for i in lst1: for j in lst2: if i == j: print(i, end=' ')