Как использовать python Карты на функциях с более чем одним аргументом - PullRequest
0 голосов
/ 27 января 2020
NAME_LIST = ["abc1","abc2","cde1"]
class abc:
    @staticmethod
    def foo(a,name,*args):
         a = do_something(name,*args)
         return do_another(a)

Как использовать python карты для передачи списка имен и вывода на печать, когда имеется более одной аргумента функции

что-то вроде этого, я хочу сохранить, * аргументы как константы (но не хочу делать это аргументами по умолчанию)

list(map(abc.foo, NAME_LIST))

Я хочу передать NAME_LIST переменные в name

1 Ответ

1 голос
/ 27 января 2020

Что вы можете сделать:

def myFunc(x,y, *args):
    return x*y+sum(args)

x=[[1,4,5,5,6,7], [3,2,1], [7,8], [2,9,0,4,3]]

y=list(map(lambda a: myFunc(*a), x))

y

#outputs:
[27, 7, 56, 25]

Итак, в вашем случае:

NAME_LIST = ["abc1","abc2","cde1"]
class abc:
    @staticmethod
    def foo(a,name,*args):
         a = do_something(name,*args)
         return do_another(a)

list(map(lambda x: abc.foo(*x), [NAME_LIST]))

Просто примечание map выполняет итерацию по предоставленной итерации, поэтому она будет выполнять вашу функцию с КАЖДОЙ отдельный элемент переданного списка, который, если вы сохраните его как NAME_LIST, будет каждый раз одной строкой - следовательно, ваша функция не будет работать, потому что у нее 2 позиционных аргумента, так что это минимальный размер каждого элемента для списка, который вы хотите do map on - следовательно [NAME_LIST].

Надеюсь, это имеет смысл!

...