我需要从list1中删除一些字符串,所以我将它们放入list2中,并且无法找到如何使它工作。
list1 = ['abc', 'def', '123']
list2 = ['def', 'xyz', 'abc'] # stuff to delete from list1
我想从list1中删除'abc'和'def',因此它只包含我需要的东西
答案 0 :(得分:6)
您可以使用列表理解作为过滤器来完成此操作,例如
set2, list1 = set(['def', 'xyz', 'abc']), ['abc', 'def', '123']
print [item for item in list1 if item not in set2]
# ['123']
我们将list2
的元素转换为集合,因为它们提供更快的查找。
逻辑类似于这样的写作
result = []
for item in list1:
if item not in set2:
result.append(item)
答案 1 :(得分:1)
如果您在list1
中没有任何重复(或者如果您想删除重复项),可以使用:
list1 = set(['abc', 'def', '123'])
list2 = set(['def', 'xyz', 'abc'])
print(list(list1 - list2))
答案 2 :(得分:0)
list1 = set(['abc', 'def', '123'])
list2 = set(['def', 'xyz', 'abc'])
# here result will contain only the intersected element
# so its very less.
result = set(filter(set(list1).__contains__, list2))
newlist = list()
for elm in list1:
if elm not in result:
newlist.append(elm)
print newlist
输出:
['123']
答案 3 :(得分:0)
使用builtin set methods的更短答案:
list1 = ['abc', 'def', '123']
list2 = ['def', 'xyz', 'abc']
set1 = set(list1)
set2 = set(list2)
print(set1.difference(set2)))
引用上面的文档:
“返回一个新集合,其中集合中的元素不在其他元素中。”