Python 嵌套列表加入查找引用列表

Python nested lists join lookup reference list

python 的新手,如果这是微不足道的,我们深表歉意。 我有一个列表

list = [3,1,0,2]

和嵌套查找

lookup = [[265,301,201],[225,302,191],[225,35,134],[28,82,158]]

我需要将 "list" 中的每个元素与 "lookup" 中的每个对应元素索引和 return "lookup" 中此元素的值相匹配。 结果应该是:

result = [
[28,82,158],
[225,302,191],
[265,301,201],
[225,35,134]
]

您可以使用列表理解:

result = [lookup[i] for i in list]

(请注意,您不应调用变量 list。它会隐藏同名的内置函数,迟早会导致意外行为。)

常规 list comp 和索引:

lst = [3,1,0,2]

print([lookup[i] for i in lst])
[[28, 82, 158], [225, 302, 191], [265, 301, 201], [225, 35, 134]]

或使用 __getitem__ 的功能方法:

lst = [3,1,0,2]


lookup = [[265,301,201],[225,302,191],[225,35,134],[28,82,158]]

print(list(map(lookup.__getitem__, lst)))

[[28, 82, 158], [225, 302, 191], [265, 301, 201], [225, 35, 134]]

使用 operator.itemgetter:

lst = [3,1,0,2]


lookup = [[265,301,201],[225,302,191],[225,35,134],[28,82,158]]
from operator import itemgetter

print(list(itemgetter(*lst)(lookup)))
 [[28, 82, 158], [225, 302, 191], [265, 301, 201], [225, 35, 134]]

你也可以使用 map 和 lambda:

>>> lst = [3, 1, 0, 2]
>>> lookup = [[265,301,201],[225,302,191],[225,35,134],[28,82,158]]
>>> map(lambda x:lookup[x], lst)
[[28, 82, 158], [225, 302, 191], [265, 301, 201], [225, 35, 134]]