如果list2中不存在,我需要从list1中删除所有不匹配的项目
List1 = ['dog', 'cat', 'bird']
List2 = ['dog']
for x in List2:
for y in List1:
if x!=y:
List1.remove(x)
从list1中删除一个项目后,此循环停滞。 这个操作的正确代码是什么
答案 0 :(得分:6)
你可以用列表理解做这样的事情:
list_intersection = [item for item in List1 if item in List2]
这将迭代List1
中的所有项目,并仅返回List2
中的元素。
list_intersection
变量现在只包含出现在两个列表中的元素,忽略仅出现在其中一个列表中的项目。
如果您不介意在此交叉过程中删除重复项,则可以将两个列表转换为sets并执行set1.intersection( set2 )
。这将做同样的事情 - 但请记住,将列表转换为集合将删除重复项。完成后,您可以将设备转换回列表。
l1 = [ 1, 1, 2, 3 ]
l2 = [ 2, 3, 4, 3 ]
l3 = set( l1 ).intersection( set( l2 ) )
l3 = list( l3 )
变量l3
现在将等于[2, 3]
,因为它们是原始列表中唯一出现的两个元素。
答案 1 :(得分:2)