首页 > 解决方案 > 如何比较两个不同长度的列表并删除一些元素?

问题描述

我有两个列表,第一个包含一些在第二个列表中不存在的元素,其中包含更多元素。我需要删除第二个列表中不存在的元素。

在下面的示例中,我只需要从第一个列表中删除“0”。所以:

Input:
list1 = [0,1,2,3]
list2 = [1,2,3,4,5,6,7]

Output:
list1 = [1,2,3]
list2 = [1,2,3,4,5,6,7]

我尝试了这个简单的代码,但它返回一个空列表

list1=[0,1,2,3]
list2=[1,2,3,4,5,6,7]

for element in list1:
    for element1 in list2:
        if element != element1:
            for element in list1:
                list1.remove(element)
print(list1)

请问有什么帮助吗?

标签: pythonlist

解决方案


你可以使用集合来做到这一点!

set(list1).intersection(list2) # [1,2,3]

您也可以使用列表推导,但理论上速度较慢。

list1 = [0,1,2,3]
list2 = [1,2,3,4,5,6,7]

list1 = [x for x in list1 if x in list2] # [1,2,3]

推荐阅读