在python中使用map函数中的赋值有什么好的替代方法?

时间:2013-05-30 03:08:34

标签: python python-2.7

在地图功能中使用分配是非法的,例如

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

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

2 个答案:

答案 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)

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