首页 > 解决方案 > 从 2 个现有列表创建新列表,它们的值匹配

问题描述

我想在屏幕截图中这样做。你能帮我吗?

代码:

import numpy as np

op = np.array([[46, 29],
               [39, 47],
               [25, 47],
               [31, 24]])
rt = np.array([[1, 1, 1, 0],  # op[0][1]+op[1][1]+op[2][1]+op[3][0]= 29 + 47 + 47 + 31 = 154
               [1, 0, 1, 1],
               [1, 0, 1, 0],
               [0, 1, 0, 1],
               [1, 1, 0, 0],
               [0, 1, 1, 1],
               [0, 1, 0, 1],
               [1, 1, 1, 0],
               [0, 1, 1, 0],
               [1, 0, 1, 0]])

在此处输入图像描述

标签: pythonlist

解决方案


这是一个纯 Python 解决方案。可能有一个性能更高的 NumPy 解决方案。在这里,我们迭代rt并用 .zip 压缩那里的子数组op。然后我们使用子数组的值作为子数组rt中的索引op,并对我们查找的值求和。

[sum(o[r] for o, r in zip(op, x)) for x in rt]
# [154, 139, 146, 142, 132, 164, 142, 154, 171, 146]

推荐阅读