如何在lambda中传入未指定数量的参数?(使用Python)

7
假设我们有一个名为 func 的函数,在该函数中有一个包含 n 个项目的列表。 n 数字取决于传递给 func 的参数。在 func 中也有一个 lambda 函数(每次调用 func 时使用 eval 创建),它接受 n 个参数并返回一些内容。是否有任何方法可以将列表中的项目传递给 lambda 函数(列表中的项目和 lambda 中的参数始终相等,唯一的区别是列表项目包装在 [] 中而参数没有)?您不能简单地将列表插入到 lambda 中,因为实际上列表可能具有 3、30 或任意数量的参数。
简化图片:
def func(*args):
    lst = [n items where n changes depending on *args]
    lambda n arguments/items: do sth

1
这看起来有点像一个XY问题 - Don Roby
你为什么要首先使用lambda,你想做什么? - Padraic Cunningham
1个回答

7
您可以使用lambda实现类似于*arg和**kwargs的功能:
>>> a = lambda *args, **kwargs: (args, kwargs)
>>> a(1, 2, a="a", b="b")
((1, 2), {'a': 'a', 'b': 'b'})

但是我的lambda函数已经创建好了,看起来就像这样:lambda x,y,z: z*100 + x - y。这是我的列表,看起来就像这样:lst = [4,5,6]。问题是如何将列表中的特定项传递到lambda函数中(只知道项目数量和参数数量相同)。如果没有办法做到这一点...没关系。我只是想确定一下 :) - Mariusz
2
你是在寻找 my_lambda_func(*lst) 吗? - ch3ka
很酷,我以为 '*' 符号只允许将多个参数传递给函数,但它实际上可以“解包”列表并将其项作为参数提供。谢谢!它起作用了。 - Mariusz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接