来自多个 2D 列表的 Python 2D 列表条件映射

问题描述 投票:0回答:1

我有一个列表 A 的列表,看起来像这样

A = [[1, 0, 0],
     [1, 1, 1],
     [0, 1, 0]]

然后我还有另外两个列表 B 和 C 的列表,如下所示:

B = [['a', 'c', 's'],
     ['y', 'e', 's'],
     ['u', 'w', 'g']]

C = [['i', 'p', 'u'],
     ['k', 'l', 'n'],
     ['h', 'o', 'm']]

我正在尝试执行从 A 到 B 和 C 的映射,并进行值调节:

当'cell'值为1时,引用B中相同位置的值,当为0时,同样引用C。

我试图通过尝试将列表映射到列表来解决问题。但似乎没有任何结果。

如何将 A 映射到 B 和 C,以便生成这样的列表列表?

[['a', 'p', 'u'],   # 'a' from B; 'p' from C; 'u' from C
 ['y', 'e', 's'],   # 'y' from B; 'e' from B; 's' from B
 ['h', 'w', 'm']]   # 'h' from C; 'w' from B; 'm' from C
python list dictionary multidimensional-array coordinates
1个回答
0
投票

您可以通过先压缩这 3 个列表来一起迭代它们:

[[i if f else j for f, i, j in zip(a, b, c)] for a, b, c in zip(A, B, C)]

演示:https://ideone.com/f8XRdk

© www.soinside.com 2019 - 2024. All rights reserved.