我有list1
和list2
。 list2
是必须从list1
中删除的一组字词,例如:
list1=['paste', 'text', 'text', 'here', 'here', 'here', 'my', 'i', 'i', 'me', 'me']
list2=["i","me"]
期望的输出:
list3=['paste', 'text', 'text', 'here', 'here', 'here', 'my']
我尝试过使用'for'的不同版本但到目前为止没有结果。
任何想法都将不胜感激!
答案 0 :(得分:16)
>>> list1 = ['paste', 'text', 'text', 'here', 'here', 'here', 'my', 'i', 'i', 'me', 'me']
>>> list2 = ["i","me"]
>>> list3 = [item for item in list1 if item not in list2]
>>> list3
['paste', 'text', 'text', 'here', 'here', 'here', 'my']
注意:列表中的查找为O(n)
,请考虑从list2
创建set - 集合中的查找为O(1)
。
答案 1 :(得分:5)
如何利用set算术?
diff = set(list1) - set(list2)
result = [o for o in list1 if o in diff]
甚至更好(更有效率):
set2 = set(list2)
result = [o for o in list1 if o not in set2]