Использование карты python с ключевым аргументом - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть функция, которая выглядит следующим образом:

def myFunct(arg1=None,arg2=None,arg3=None):
    pass

Я хотел бы использовать эту функцию с функцией карты, но только с аргументами 1 и 3. Идея была бы:

map(myFunct,list_arg1,list_arg3)

, поэтому каждый вызов будет myFunct(value1,arg3=value3)

Как я могу этого достичь?

Ответы [ 2 ]

4 голосов
/ 21 апреля 2020

Вы можете использовать lambda для сопоставления аргументов с аргументами вашего ключевого слова.

def foo(arg1=None, arg2=None, arg3=None):
    return arg1 + arg3

list1 = [3, 4, 5]
list2 = [5, 6, 7]

print(list(map(lambda x, y: foo(arg1=x, arg3=y), list1, list2)))
0 голосов
/ 21 апреля 2020

Другой подход - сохранить вашу функцию как есть и изменить то, что вы отображаете:

from itertools import repeat
def f(x = 0, y = 0, z = 0):
    return sum((x,y,z))

map(f,range(1,10),repeat(0),range(21,30))

Хотя с точки зрения читабельности простое выражение генератора может быть предпочтительнее любого решения, основанного на map, что-то вроде:

f(x = i,z = j) for i,j in zip(range(1,10),range(21,30)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...