假设我们有一个函数add如下所示
def add(x, y):
return x + y
我们想为数组应用map函数
map(add, [1, 2, 3], 2)
语义是我想给数组的每个元素加2。但是map函数在第三个参数中也需要一个列表。
注意:为了简单起见,我使用了添加示例。原来的函数要复杂得多。当然,在add函数中设置y的默认值是不可能的,因为每次调用都会改变它。
假设我们有一个函数add如下所示
def add(x, y):
return x + y
我们想为数组应用map函数
map(add, [1, 2, 3], 2)
语义是我想给数组的每个元素加2。但是map函数在第三个参数中也需要一个列表。
注意:为了简单起见,我使用了添加示例。原来的函数要复杂得多。当然,在add函数中设置y的默认值是不可能的,因为每次调用都会改变它。
当前回答
def func(a, b, c, d):
return a + b * c % d
map(lambda x: func(*x), [[1,2,3,4], [5,6,7,8]])
通过用lambda包函数调用并使用星号解包,可以使用任意数量的参数进行map。
其他回答
Map可以包含多个参数,标准方式是
map(add, a, b)
在你的问题中,应该是
map(add, a, [2]*len(a))
In:nums = [1,2,3]
在:文件夹(添加,nums, [2]* en(nums))
出:[3,4,5]
你可以将lambda和map一起包含:
list(map(lambda a: a+2, [1, 2, 3]))
有时我解决类似的情况(比如使用熊猫。应用方法)使用闭包
为了使用它们,定义一个函数,动态定义并返回函数的包装器,有效地使其中一个参数成为常量。
就像这样:
def add(x, y):
return x + y
def add_constant(y):
def f(x):
return add(x, y)
return f
然后,add_constant(y)返回一个函数,可用于将y添加到任何给定值:
>>> add_constant(2)(3)
5
这允许你在每次给出一个参数的任何情况下使用它:
>>> map(add_constant(2), [1,2,3])
[3, 4, 5]
edit
如果你不想在其他地方写闭包函数,你总是可以使用lambda函数动态地构建它:
>>> map(lambda x: add(x, 2), [1, 2, 3])
[3, 4, 5]
如果你真的需要使用map函数(就像我的课堂作业…),你可以使用一个包装器函数只有一个参数,其余的传递给原始的一个在它的主体;例如:
extraArguments = value
def myFunc(arg):
# call the target function
return Func(arg, extraArguments)
map(myFunc, itterable)
又脏又丑,还是有用的