Использование функции карты с функцией с несколькими переменными - PullRequest
6 голосов
/ 04 февраля 2012

У меня есть функция с несколькими переменными, и я хотел бы использовать функцию map () с ней.

Пример:

def f1(a, b, c):
    return a+b+c
map(f1, [[1,2,3],[4,5,6],[7,8,9]])

Ответы [ 3 ]

10 голосов
/ 04 февраля 2012

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]
5 голосов
/ 04 февраля 2012

Вы не можете. Используйте обертку.

def func1(a, b, c):
    return a+b+c

map((lambda x: func1(*x)), [[1,2,3],[4,5,6],[7,8,9]])
3 голосов
/ 04 февраля 2012

Вы можете просто обернуть свою функцию с несколькими аргументами в другую функцию, которая принимает в качестве кортежа / списка только один аргумент, а затем передает его внутренней функции.

map(lambda x: func(*x), [[1,2,3],[4,5,6],[7,8,9]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...