나는이 다음 코드 : 나는 3 개 값으로 목록을 확장 할 수있는 람다 함수를 얻는 방법파이썬 람다 매개 변수
g = lambda a, b, c: sum(a, b, c)
print g([4,6,7])
?
나는이 다음 코드 : 나는 3 개 값으로 목록을 확장 할 수있는 람다 함수를 얻는 방법파이썬 람다 매개 변수
g = lambda a, b, c: sum(a, b, c)
print g([4,6,7])
?
3 개 값이 수행 할 수있는 목록 t0의 확장 :
g(*[4,6,7])
을하지만, sum
은 귀하의 방식으로 작동하지 않습니다. 또는 당신은 이런 식으로 쓸 수 있습니다 :
>>> g = lambda *arg: sum(arg)
>>> print g(4, 5, 6)
15
>>>
또는 당신의 람다리스트 동의합니다
g = lambda alist: sum(alist)
print g([4,6,7])
g = lambda L: sum(L)
print g([4,6,7])
은 임의의 크기의 목록에서 작동합니다. 당신이 g = lambda a, b, c: someFunc(a, b, c)
를 사용하려면
, 다음 print g(4,6,7)
당신의 대답은 'sum'이 인수를 받아 들일 수 없다 잘못 파이썬에서 제거되었습니다. – zhangyangyu
@zhangyangyu : 공정한 포인트. 내 의미를 명확히하기 위해 편집했습니다 – inspectorG4dget
왜 당신이 목록을 취할 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
당신은 세 개의 매개 변수를받는 함수를 정의하고, 하나의 매개 변수를 공급하고를 , 목록. 당신이
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
sum()
은 제공 한 인수를 처리 할 수 없으므로 당신의 람다 함수 이후
는 단순히 sum()
기능, 왜 그냥 직접 sum()
전화입니까?
코드의 경우 다음 a, b, c
값 :
>>> a, b, c = range(1,4)
>>> print a,b,c
1 2 3
그리고 당신이 원하는 할 수있는 :
>>> g = lambda a, b, c: sum([a, b, c])
>>> print g(*[a,b,c])
6
왜 그냥 다음을 수행하지?: 당신의 람다가 전달 고정 된 길이의리스트/튜플을 기대하지만, 별도의 매개 변수에 그리스트/튜플의 값을 확장하고자하는 경우
>>> sum([a,b,c])
6
이것은 예입니다. 다른 것을하려고하지만 람다 매개 변수에 대해 알고 싶습니다. – smac89
>>> g=lambda *l: sum(l)
>>> print g(1,2,3)
6
는 다음과 같은 작동합니다.
g = lambda (a, b, c): a + b + c
g([4, 6, 7])
매개 변수 목록 주변의 괄호에 유의하십시오.
이 "기능"파이썬 2.x에서 작동하지만, 3
고마워요 @zhangyangyu – smac89