Python过滤2个列表

时间:2011-11-23 06:11:17

标签: python list filter element

我正试图找到一种方法来使用一个列表来过滤掉另一个列表的元素。

有点像交叉语法但完全相反

lst = [0,1,2,6]

secondlst = [0,1,2,3,4,5,6]

预期结果

[3,4,5]

4 个答案:

答案 0 :(得分:12)

简单方法:

r = [v for v in secondlst if v not in lst]

list(set(secondlst).difference(lst))

答案 1 :(得分:2)

只看Python的set()'类型。

>>> lst = [0,1,2,6]
>>> secondlst = [0,1,2,3,4,5,6]
>>> set(lst).symmetric_difference(set(secondlst))
set([3, 4, 5])

答案 2 :(得分:2)

您可以使用filter

filter(lambda x: x not in lst, secondlst)

答案 3 :(得分:1)

简单:

outcome = [x for x in secondlst if x not in lst]

如果lst很大,则更复杂但更快:

lstSet = set(lst)
outcome = [x for x in secondlst if x not in lstSet]