2015-11-30 3 views
3

Новое на python, так что извиняйтесь, если это тривиально. У меня есть списокPython вложенные списки списка ссылок поиска ссылок

list = [3,1,0,2] 

и вложенного поиск

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

Мне нужно, чтобы соответствовать каждому элементу в «списке» с каждым соответствующим индексом элемента в «поиске» и возвращает значение этого элемента из "Погляди". Результата должен быть:

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

ответ

3

Вы можете использовать список понимание:.

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

(Обратите внимание, что вы не должны называть переменную list Это будет затенять встроенную команду с таким же названием, и приведет к неожиданному beahaviour рано или поздно)

+0

спасибо я пойду с пониманием списка – Neuril

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]] 
1

вы можете использовать карту и лямбда тоже:

>>> 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]] 
+1

спасибо, этот ответ выглядит круто и – Neuril

Смежные вопросы