首页 > 解决方案 > 如何在具有多个参数的函数上使用 python Maps

问题描述

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

当有多个函数参数时,如何使用 python 映射传入名称列表并打印输出

像这样的东西,我想保留 a,*args 作为常量(但不想让它成为默认参数)

list(map(abc.foo, NAME_LIST))

我想将NAME_LIST变量传递给name

标签: pythonpython-3.xfunctools

解决方案


你可以做什么:

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 个位置参数,所以这是您要在列表上执行的每个元素的最小大小map- 因此[NAME_LIST].

希望这是有道理的!


推荐阅读