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