我们索引列表的第 i 个元素表示我们想知道的 2D 列表中第 i 个 1D 列表的索引。如果我们的二维列表和索引列表如下所示:a = [[1,7,3],[9,0,8]]list_ix = [1, 0]期望的结果是 [7,9]。目前我通过使用如下循环来做到这一点:res = []for i in range(len(list_ix)): res.append(a[i][list_ix[i]])但这在实际代码中看起来很乱。有一个更好的方法吗?我将不胜感激任何建议。谢谢你!
3 回答

MMMHUHU
TA贡献1834条经验 获得超8个赞
我认为这可以通过这种方式完成:
res = [a[idx][element] for idx, element in enumerate(list_ix)]

慕后森
TA贡献1802条经验 获得超5个赞
您可以使用zip()功能:
a = [[1,7,3],[9,0,8]]
list_ix = [1, 0]
out = [l[i] for i, l in zip(list_ix, a)]
print(out)
印刷:
[7, 9]

桃花长相依
TA贡献1860条经验 获得超8个赞
使用enumerate
which 可以让您从列表中获取值并跟踪您的当前位置。
a = [[1,7,3],[9,0,8]]
list_ix = [1, 0]
res = []
for i, outer_list_index in enumerate(list_ix):
res.append(a[i][outer_list_index])
print(res)
添加回答
举报
0/150
提交
取消