首页 > 解决方案 > 比较 3D 列表和 4D 列表

问题描述

我正在处理列表,一个是 3D 列表,另一个是 4D 列表,我正在尝试比较它们,如果内部列表匹配,则附加“True”否则附加“False”我做了一些事情,但不是完全正常工作,所以也许你可以帮助我,这是我的代码

#3D list
list1 = [[[0, 2, 1], [0, 4, 2, 3, 1]], [[0, 4, 3, 1], [0, 4, 3, 1]], [[0, 3, 2, 1], [0, 2, 3, 4, 1]]]

#4D list
list2 = [[[[0, 2, 1], [0, 4, 2, 1]], [[0, 4, 3, 1], [0, 4, 3, 1]], [[0, 3, 2, 1], [0, 4, 1]]], 
         [[[0, 2, 1], [0, 4, 2, 3, 1]], [[0, 4, 3, 1], [0, 4, 3, 1]], [[0, 3, 2, 1], [0, 2, 3, 4, 1]]]]

decision = []
for i, j in zip(list1, list2):
    finaldecision = []
    for k in j:
        if i == k:
            decision.append('True')
        else:
            decision.append('False')
    finaldecision.append(decision)
                
print(finaldecision)

finaldecision = [['False', 'False', 'False', 'False', 'True', 'False']]

我想比较每两个元素,例如:

#From the 3D list               #From the first 3D list of the 4D list
[[0, 2, 1], [0, 4, 2, 3, 1]]    == [[0, 2, 1], [0, 4, 2, 1]]           #False
[[0, 4, 3, 1], [0, 4, 3, 1]]    == [[0, 4, 3, 1], [0, 4, 3, 1]]        #True
[[0, 3, 2, 1], [0, 2, 3, 4, 1]] == [[0, 3, 2, 1], [0, 4, 1]]           #False

然后对 4D 列表的下一个 3D 列表执行相同操作,这是我想要的输出。

finaldecision = [[False, True, False], [True, True, True]]

我确实得到了元素的数量,但是 True 和 False 的顺序不正确,并且生成的 2D 列表的维度也不正确,任何帮助将不胜感激,非常感谢!

标签: pythonlistfor-looplist-comprehension

解决方案


像这样的东西:

finaldecision = []
for i in list2:
    decision = []
    
    for j in range(len(i)):
        decision.append(i[j] == list1[j]
    finaldecision.append(decision)

在第一个循环中,您将两个列表都放在同一级别,然后在嵌套循环中,您比较每个元素,假设它们的长度相同。


推荐阅读