首页 > 解决方案 > 根据来自另一个列表的索引从列表列表中获取元素

问题描述

我想在不使用列表理解、循环或 Python 中的任何迭代方法的情况下检索列表列表中的特定元素。

例如,给定这个列表:

[[1,2,3,4],[3,4],[5,6,7]]

这个向量:

[0,0,1]

我想检索第 0 个列表中的第 0 个元素、第 1 个列表的第 0 个元素和第 2 个列表的第 1 个元素:

[1,2,3,4][0] -> 1
[3,4][0] -> 3
[5,6,7][1] -> 6

这应该给出这个结果:

[1,3,6]

这在python中可能吗?

标签: pythonnested-lists

解决方案


使用列表推导是实现此目的zip()的最Pythonic方式之一:

>>> my_list = [[1,2,3,4],[3,4],[5,6,7]]
>>> my_vector = [0,0,1]

>>> [x[i] for x, i in zip(my_list, my_vector)]
[1, 3, 6]

但是,由于 OP 不能使用list comprehensionmap() ,这里有一个使用lambda 表达式的替代方法:

>>> list(map(lambda x, y: x[y], my_list, my_vector))
[1, 3, 6]

在上述解决方案中,我在返回迭代器时显式地对map()to返回的对象进行类型转换。list如果您可以使用iterator,则无需进行类型转换。


推荐阅读