我正试图找到一种方法来使用一个列表来过滤掉另一个列表的元素。
有点像交叉语法但完全相反
lst = [0,1,2,6]
secondlst = [0,1,2,3,4,5,6]
预期结果
[3,4,5]
答案 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]