在地图功能中使用分配是非法的,例如
map(lambda in: test[in]+=value[in], somelist)
那么什么是它的好选择。您可以使用for循环来执行此操作,但在面对大规模时,我认为for循环解决方案非常慢,是否有更好的方法?
答案 0 :(得分:5)
使用它,首选:
for i in somelist:
test[i] += value[i]
无论如何,你的例子 是使用map
的好例子。当您想要创建新列表时,可以使用map
甚至更好的列表推导。在这种情况下,正在对每个项目执行分配,因此在此处创建新列表毫无意义!
答案 1 :(得分:0)
如果您不介意使用numpy
(并且我不知道您为什么这样做),那么这应该很多更有效:
test[somelist] += value[somelist]
假设您首先将列表转换为numpy
数组(开销可以忽略不计):
import numpy as np
test = np.array(test)
value = np.array(value)
请注意,除了=
,-=
等之外,这也适用于纯赋值运算符*=
。