Python 比较两个多维列表的几个问题

Python 比较两个多维列表的几个问题,python,python-3.x,list,Python,Python 3.x,List,谢谢你看到我的问题。 我设计了一个清单,如果清单上有一个元素,就把清单上的每一个元素都抹掉。 但它不能正常工作。它仅在_列表[0]之外有效。 我的代码中发生了什么 a_list = [[0, 1], [0, 2]] b_list = [[0, [0, 1], [0, 2], '3', [0, 4]], ['1', [0,1], [0, 2], [0, 3], '4', [0, 5]]] for i in b_list: for j in a_list: temp = [

谢谢你看到我的问题。 我设计了一个清单,如果清单上有一个元素,就把清单上的每一个元素都抹掉。 但它不能正常工作。它仅在_列表[0]之外有效。 我的代码中发生了什么

a_list = [[0, 1], [0, 2]]
b_list = [[0, [0, 1], [0, 2], '3', [0, 4]], ['1', [0,1], [0, 2], [0, 3], '4', [0, 5]]]

for i in b_list:
    for j in a_list:
        temp = [k for k in i if k != j]
    print(temp)

>>> 0, [0, 1], '3', [0, 4]]
    ['1', [0, 1], [0, 3], '4', [0, 5]]
在这个结果中,我无法理解为什么[0,1]在那里

我想要这样的结果

>>> [0, '3', [0, 4]]
>>> ['1', [0, 3], '4', [0, 5]]

请帮助我。

您可以使用如下嵌套列表:

[[i for i in l if i not in a_list] for l in b_list]
这将返回:

[[0, '3', [0, 4]], ['1', [0, 3], '4', [0, 5]]]

你很接近。您可以对
b_列表
的元素使用
not in
,以检查它们在
a_列表
中是否存在

a_list = [[0, 1], [0, 2]]
b_list = [[0, [0, 1], [0, 2], '3', [0, 4]], ['1', [0,1], [0, 2], [0, 3], '4', [0, 5]]]

for i in b_list:
    temp = [j for j in i if j not in a_list]
    print(temp)

# [0, '3', [0, 4]]
# ['1', [0, 3], '4', [0, 5]]

真正的问题是每次迭代
a_列表中的项目时,代码都会覆盖
temp
,因此当
a_列表=[[0,1],[0,2]]
时,您的
temp
将只包含筛选出
[0,2]
的结果。以下是对代码的修改:

a_list=[[0,1],[0,2]]
b_list=[0,0,1],[0,2],[3',[0,4],[1',[0,1],[0,2],[0,3],[4',[0,5]]
对于b_列表中的子_列表:
温度=[]
对于子列表中的项目b:
not_in_a=真
对于\u列表中的项目\u a:
不在a中&=项目b!=项目a
如果不是_中的_:
临时附加(项目b)
打印(临时)

如果您正在寻找简洁的代码,我相信其他答案可以帮助您。我只是指出您的代码出了什么问题。

在您的内部循环中,您正在创建两个列表。第一个文件中没有[0,1],但您没有打印它。第二次通过循环重新分配给temp,但此列表仅删除了[0,2]。这就是要打印的。谢谢你的精彩解决方案。我真的知道我必须做更多的研究。你的评论引起了我的许多思考。多谢各位。