对于这4个数组, a1 a2 a3
a1 = [5,3,0,2,4,2,...,...]
a2 = [5,3,0,2,4,2,...,...] => store index number, correspond value is in b
a3 = [5,3,0,2,4,2,...,...]
b = [250,300,1,2,70,23,...,...]
我想找到一种生成像这样的数组的有效方法:
c1 = [23,2,250,1,70,1,...,...]
c2 = [23,2,250,1,70,1,...,...]
c3 = [23,2,250,1,70,1,...,...]
但是在我看来,使用3个Forloop解决这个问题太慢了。 我想找到一种有效的解决方法。 例如,同时映射3个数组。
答案 0 :(得分:1)
您要做的是使用列表a1
,a2
,a3
作为列表b
的索引。您可以使用list comprehensions在Python中有效地做到这一点。在您的示例中,这看起来像
c1 = [b[i] for i in a1]
如果您有大量的a
列表,那么最有效的过程就是将它们写入一个同样可以循环通过的组合数组的行中。
答案 1 :(得分:1)
这对您有用吗?
c1,c2,c3 = [list(map(lambda x:b[x],array)) for array in [a1,a2,a3]]