希望我这里没有重复 :-)
我想知道过滤Python列表的最有效方法。 我手头的任务是找出未出现在另一个列表中的列表元素。
我的第一个列表是一个对象列表(没有不必要的细节):
Class A:
def __init__(self,item1, item2):
self.item1 = item1
self.item2 = item2
稍后,在我的脚本中,我正在解析一个输入文本文件,并使用真实数据填充
list1
(item1
和item2
字段都是字符串)。还有第二个列表
list2
,其中只包含与item1
相对应的字符串列表。我感兴趣的是,在list2
中不存在item1
的list1
元素。
(
list1
包含大约3000个元素,list2
更大-约60000个元素。)
我的第一次尝试非常明显:notMatched = list(itertools.ifilter(lambda x: x.item1 not in list2), list1))
现在,它按预期工作,为我提供了我想要的内容,但我仍然在想这是否是我能想到的最佳解决方案。有任何想法吗?
谢谢
list2
转换为set
,但你可能会发现Daren的答案中的列表推导式更快(且更易于阅读)。 - John La Rooy