如何根据索引列表从二维列表中的每个一维列表中选择一个元素?

我们索引列表的第 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]])

但这在实际代码中看起来很乱。


有一个更好的方法吗?我将不胜感激任何建议。谢谢你!


宝慕林4294392
浏览 177回答 3
3回答

MMMHUHU

我认为这可以通过这种方式完成:res = [a[idx][element] for idx, element in enumerate(list_ix)]

慕后森

您可以使用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]

桃花长相依

使用enumeratewhich 可以让您从列表中获取值并跟踪您的当前位置。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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python