Python lambda参数

Python lambda参数,python,lambda,Python,Lambda,我有以下代码: g = lambda a, b, c: sum(a, b, c) print g([4,6,7]) 如何让lambda函数将列表扩展为3个值 g = lambda L: sum(L) print g([4,6,7]) 适用于任意大小的列表 如果您想使用g=lambda,b,c:someFunc(a,b,c),那么请调用print g(4,6,7)为什么不能更改lambda以获取列表。因为sum()不接受三个参数: >>> g = lambda a_list:

我有以下代码:

g = lambda a, b, c: sum(a, b, c)
print g([4,6,7])
如何让lambda函数将列表扩展为3个值

g = lambda L: sum(L)
print g([4,6,7])
适用于任意大小的列表


如果您想使用
g=lambda,b,c:someFunc(a,b,c)
,那么请调用
print g(4,6,7)
为什么不能更改
lambda
以获取列表。因为
sum()
不接受三个参数:

>>> g = lambda a_list: sum(a_list)
>>> print g([4,6,7])
17
或非关键字参数:

>>> g = lambda *nkwargs: sum(nkwargs)
>>> print g(4,6,7)
17

展开列表t0 3值可通过以下方式完成:

 g(*[4,6,7])
但是,
不会以你的方式工作。 或者你可以这样写:

>>> g = lambda *arg: sum(arg)
>>> print g(4, 5, 6)
15
>>> 
或者让你的lambda接受一份清单:

g = lambda alist: sum(alist)
print g([4,6,7])

您正在定义一个包含三个参数的函数,并为其提供一个参数列表。 如果你愿意

print g([4,6,7])
为了工作,你的定义应该是

g = lambda lst: sum(lst)

您要查找的代码是:

>>> g = lambda a, b, c: sum([a, b, c])
>>> print g(*[4,6,7])
17
你想做的事行不通:

>>> g = lambda a, b, c: sum(a, b, c)
>>> print g(*[4,6,7])

Traceback (most recent call last):
  File "<pyshell#83>", line 1, in <module>
    print g(*[4,6,7])
  File "<pyshell#82>", line 1, in <lambda>
    g = lambda a, b, c: sum(a, b, c)
TypeError: sum expected at most 2 arguments, got 3
你想做的是:

>>> g = lambda a, b, c: sum([a, b, c])
>>> print g(*[a,b,c])
6
为什么不做下面的事情呢

>>> sum([a,b,c])
6

如果您的lambda希望传入一个固定长度的列表/元组,但希望将该列表/元组中的值扩展为单独的参数变量,则以下操作将起作用

g = lambda (a, b, c): a + b + c
g([4, 6, 7])
请注意参数列表周围的括号


这个“特性”在Python2.x中工作,但是在Python3中被删除了。

如果回答错误,
sum
不能接受这些参数。这是一个示例,我正在尝试做其他事情,但是lambda参数是我想知道的。
>>> g=lambda *l: sum(l)
>>> print g(1,2,3)
6
g = lambda (a, b, c): a + b + c
g([4, 6, 7])