4

在map函数中使用赋值是违法的,比如

map(lambda in: test[in]+=value[in], somelist)

那么有什么好的选择呢。您可以使用 for 循环来执行此操作,但在我看来,当面对大规模时,for 循环解决方案非常慢,有没有更好的方法?

4

2 回答 2

5

使用这个,它是首选:

for i in somelist:
    test[i] += value[i]

无论如何,您的示例不是使用map. 当您想要创建一个新列表作为结果时,您可以使用map甚至更好的列表推导。在这种情况下,正在对每个项目执行分配,因此在这里创建新列表没有意义!

于 2013-05-30T03:10:26.760 回答
0

如果您不介意使用numpy(而且我不明白您为什么会这样做),那么这应该会高效:

test[somelist] += value[somelist]

假设您首先将列表转换为numpy数组(可忽略不计的开销):

import numpy as np
test = np.array(test)
value = np.array(value)

请注意,这也适用于纯赋值运算符=,除此之外-=*=等等。

于 2018-10-19T01:44:01.570 回答