使用map函数处理多变量函数
我有一个多变量的函数,我想用map()这个函数来处理它。
举个例子:
def f1(a, b, c):
return a+b+c
map(f1, [[1,2,3],[4,5,6],[7,8,9]])
3 个回答
3
你可以把一个需要多个参数的函数放在另一个函数里面,这个外面的函数只接收一个参数,这个参数可以是一个元组或者列表,然后再把这个参数传递给里面的函数。
map(lambda x: func(*x), [[1,2,3],[4,5,6],[7,8,9]])
5
你不能这样做。你需要使用一个包装器。
def func1(a, b, c):
return a+b+c
map((lambda x: func1(*x)), [[1,2,3],[4,5,6],[7,8,9]])
10
itertools.starmap
是专门为这个设计的:
import itertools
def func1(a, b, c):
return a+b+c
print list(itertools.starmap(func1, [[1,2,3],[4,5,6],[7,8,9]]))
输出结果:
[6, 15, 24]