【问题标题】:Compare a 3D list with a 4D list比较 3D 列表和 4D 列表
【发布时间】:2020-07-26 19:02:37
【问题描述】:

我正在处理列表,一个是 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 列表的维度也不正确,任何帮助将不胜感激,非常感谢!

【问题讨论】:

    标签: python list for-loop list-comprehension


    【解决方案1】:

    类似这样的:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-24
      • 1970-01-01
      • 2010-09-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多