在map函数中使用赋值是违法的,比如
map(lambda in: test[in]+=value[in], somelist)
那么有什么好的选择呢。您可以使用 for 循环来执行此操作,但在我看来,当面对大规模时,for 循环解决方案非常慢,有没有更好的方法?
在map函数中使用赋值是违法的,比如
map(lambda in: test[in]+=value[in], somelist)
那么有什么好的选择呢。您可以使用 for 循环来执行此操作,但在我看来,当面对大规模时,for 循环解决方案非常慢,有没有更好的方法?
使用这个,它是首选:
for i in somelist:
test[i] += value[i]
无论如何,您的示例不是使用map
. 当您想要创建一个新列表作为结果时,您可以使用map
甚至更好的列表推导。在这种情况下,正在对每个项目执行分配,因此在这里创建新列表没有意义!
如果您不介意使用numpy
(而且我不明白您为什么会这样做),那么这应该会更高效:
test[somelist] += value[somelist]
假设您首先将列表转换为numpy
数组(可忽略不计的开销):
import numpy as np
test = np.array(test)
value = np.array(value)
请注意,这也适用于纯赋值运算符=
,除此之外-=
,*=
等等。