python - 比较 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 列表的维度也不正确,任何帮助将不胜感激,非常感谢!
解决方案
像这样的东西:
finaldecision = []
for i in list2:
decision = []
for j in range(len(i)):
decision.append(i[j] == list1[j]
finaldecision.append(decision)
在第一个循环中,您将两个列表都放在同一级别,然后在嵌套循环中,您比较每个元素,假设它们的长度相同。