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]
]
答案 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]]