python – 根据第二个列表中值的未定位的索引位置从嵌套列表中获取单个元素

作为一个更大的项目的最后一部分,这是我想要解决的问题:

我有一个列表列表,我需要根据第二个列表的值提取完整的一个元素.

a = [[6,2,3,9], [10,19,14,11], [27,28,21,24]]

b = [0,2,2]

b中的值表示子列表中元素的位置.此外,b中的索引对于列表a中的元素索引为true.

我要找的结果是:

c = [6, 14, 21]

我尝试了很多这个版本:

c = [i[j] for i in a for j in b]

但结果我得到了所有列表的所有维护的列表,如下所示:

c = [6, 3, 3, 10, 14, 14, 27, 21, 21]

最佳答案 通过使用嵌套循环,您将a中的每个元素与b中的每个元素组合在一起.你想要的是成对迭代,使用
zip

c = [x[y] for x, y in zip(a, b)]
# [6, 14, 21]

这大致相当于:

c = [a[i][b[i]] for i in range(min(len(a), len(b)))]
点赞