Python嵌套列表连接查找引用列表

时间:2015-11-30 11:40:09

标签: python list nested

python的新手,如果这是微不足道那么道歉。 我有一个清单

list = [3,1,0,2]

和嵌套查找

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

我需要将“list”中的每个元素与“lookup”中的每个对应元素索引匹配,并从“lookup”返回该元素的值。 结果应该是:

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

3 个答案:

答案 0 :(得分:3)

您可以使用列表理解:

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

(请注意,你不应该调用变量list。它会影响同名内置词,并且迟早会导致意想不到的行为。)

答案 1 :(得分:3)

常规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]]

答案 2 :(得分:1)

你也可以使用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]]