作为一个更大的项目的最后一部分,这是我想要解决的问题:
我有一个列表列表,我需要根据第二个列表的值提取完整的一个元素.
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)))]