假设我们有一个函数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的默认值是不可能的,因为每次调用都会改变它。
当前回答
我相信星图就是你所需要的:
from itertools import starmap
def test(x, y, z):
return x + y + z
list(starmap(test, [(1, 2, 3), (4, 5, 6)]))
其他回答
使用列表推导式。
[x + 2 for x in [1, 2, 3]]
如果你真的,真的,真的想使用map,给它一个匿名函数作为第一个参数:
map(lambda x: x + 2, [1,2,3])
Map可以包含多个参数,标准方式是
map(add, a, b)
在你的问题中,应该是
map(add, a, [2]*len(a))
一个选项是列表推导式:
[add(x, 2) for x in [1, 2, 3]]
更多的选择:
a = [1, 2, 3]
import functools
map(functools.partial(add, y=2), a)
import itertools
map(add, a, itertools.repeat(2, len(a)))
将多个参数传递给映射函数。
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.
#multi argument
def joke(r):
if len(r)==2:
x, y = r
return x + y
elif len(r)==3:
x,y,z=r
return x+y+z
#using map
print(list(map(joke,[[2,3],[3,4,5]])))
输出= [6,12]
如果像上面的情况,只是想使用功能
def add(x,y):
ar =[]
for xx in x:
ar.append(xx+y)
return ar
print(list(map(add,[[3,2,4]],[2]))[0])
output = [5,4,6]
注:可以根据需要修改。