python - 根据来自另一个列表的索引从列表列表中获取元素
问题描述
我想在不使用列表理解、循环或 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中可能吗?
解决方案
使用列表推导是实现此目的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,则无需进行类型转换。
推荐阅读
- python - 我如何能够在同一数据框中将值从一列“更新”到另一列?
- spring - Spring WebFlux 中的 SessionLocaleResolver 等效项 - 通过会话数据解析语言环境
- amazon-web-services - 部署容器化应用程序,其中一些部分在本地机器上,一些在云上
- ios - 在 SWIFTUI 视图中从 photoLibrary UIImagePicker 捕获用户选择
- loops - 如何在fortran中编写一个循环,逐行读取直到一行为空
- ajax - 如何使用ajax对数据表中的行进行样式设置
- multiprocessing - 如何为python Multiprocessing中的每个进程分配特定的cpu num?
- python - ufunc 'multiply' did not contain a loop with signature matching types (dtype('
dtype('