使用map函数处理多变量函数

6 投票
3 回答
3955 浏览
提问于 2025-04-17 12:18

我有一个多变量的函数,我想用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]

撰写回答