You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Python二维列表基于多列表的条件映射?

二维列表条件映射实现方案

现有三个3×3的二维列表A、B、C,需要根据A中每个单元格的值进行映射:当值为1时,取用B中相同位置的元素;当值为0时,取用C中相同位置的元素,最终生成目标二维列表。

原始数据定义:

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

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

方法一:嵌套列表推导式(简洁高效)

利用Python的列表推导式可以一行完成映射,这是最常用的写法:

result = [[B[i][j] if A[i][j] == 1 else C[i][j] for j in range(len(A[i]))] for i in range(len(A))]

逻辑说明:外层循环遍历每一行的索引i,内层循环遍历该行每个元素的索引j,通过三元表达式判断A[i][j]的值,选择对应位置的B或C元素,最终生成结果列表。

方法二:嵌套循环(直观易懂)

如果对列表推导式不太熟悉,可以用嵌套循环逐步构建结果,逻辑更清晰:

result = []
# 遍历每一行
for i in range(len(A)):
    current_row = []
    # 遍历当前行的每个元素
    for j in range(len(A[i])):
        if A[i][j] == 1:
            current_row.append(B[i][j])
        else:
            current_row.append(C[i][j])
    result.append(current_row)

逻辑说明:先初始化空的结果列表,逐行处理原始数据,每行内逐个判断元素值,将对应位置的B或C元素添加到当前行列表,最后把构建好的行添加到结果列表中。

验证结果:
运行上述代码后,打印result会得到目标结构:

print(result)
# 输出:
# [['a', 'p', 'u'], ['y', 'e', 's'], ['h', 'w', 'm']]

内容的提问来源于stack exchange,提问作者BingQuan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 10:16:28