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])