删除另一个列表中的一个列表中的元素

时间:2013-07-29 21:44:28

标签: python list

我有list1list2list2是必须从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'的不同版本但到目前为止没有结果。

任何想法都将不胜感激!

2 个答案:

答案 0 :(得分:16)

使用list comprehension

>>> 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]
相关问题