0
묶음 값에 입력 번호를 추가하여 합계 함수 목록을 반환하는 함수를 작성해야합니다. 2,3,4,5,6하지만 6,6,6,6,6생성자와 실제 변수 값
문제는 "I"에있다 :
def addition_range(start, end):
if start >= end: return None
#res = ((lambda x: x + i) for i in range(start, end)) #1
res = [ (lambda x: x + i) for i in range(start, end) ] #2
return res
for i in addition_range(0, 5): print(i(2))
출력은 같이해야한다 :이 내가 무슨 짓을 변수를 호출 할 때 함수는 i (4)의 실제 값을 사용하며 목록 생성 중에 사용되는 값은 사용하지 않습니다. 문제는 (# 1) 대신 (# 2)를 사용하여 간단히 해결할 수 있지만, (# 2)에 대한 해결책이 있습니까? 시도 :
res = [ (lambda x: x + copy.deepcopy(i)) for i in range(start, end) ]
그러나 도움이되지 않습니다.
감사합니다. 버전이 i
를 평가하는 반면, 더미 파라미터 람다가 정의 될 때 평가
def addition_range(start, end):
res = [(lambda x, i=i: x + i) for i in range(start, end)]
return res or None
:
WINXP + 파이썬 3.2
고맙습니다. 작동합니다! – fogbit