假设我们有一个函数add如下所示

def add(x, y):
    return x + y

我们想为数组应用map函数

map(add, [1, 2, 3], 2)

语义是我想给数组的每个元素加2。但是map函数在第三个参数中也需要一个列表。

注意:为了简单起见,我使用了添加示例。原来的函数要复杂得多。当然,在add函数中设置y的默认值是不可能的,因为每次调用都会改变它。


当前回答

使用列表推导式。

[x + 2 for x in [1, 2, 3]]

如果你真的,真的,真的想使用map,给它一个匿名函数作为第一个参数:

map(lambda x: x + 2, [1,2,3])

其他回答

将多个参数传递给映射函数。

def q(x,y):
    return x*y

print map (q,range(0,10),range(10,20))

这里q是map()调用的带有多个参数的函数。 确保,两个范围的长度,即。

len (range(a,a')) and len (range(b,b')) are equal.

如果你真的需要使用map函数(就像我的课堂作业…),你可以使用一个包装器函数只有一个参数,其余的传递给原始的一个在它的主体;例如:

extraArguments = value
def myFunc(arg):
    # call the target function
    return Func(arg, extraArguments)


map(myFunc, itterable)

又脏又丑,还是有用的

另一种选择是:

results = []
for x in [1,2,3]:
    z = add(x,2)
    ...
    results += [f(z,x,y)]

这种格式在调用多个函数时非常有用。

如果您有它可用,我会考虑使用numpy。对于这些类型的操作,它非常快:

>>> import numpy
>>> numpy.array([1,2,3]) + 2
array([3, 4, 5])

这是假设您的实际应用程序正在执行数学操作(可以向量化)。

In:nums = [1,2,3]

在:文件夹(添加,nums, [2]* en(nums))

出:[3,4,5]