Мне нужно написать функцию, которая возвращает список функций суммы, добавляя входное число к некоторому связанному значению. Вот что я сделал:
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) )
Вывод должен быть таким: 2,3,4,5,6, но это 6,6,6,6,6
Проблема в переменной «i», когда я вызываю функции, они используют фактическое значение i (4), а не значение, используемое при генерации списка. Проблема может быть просто решена с помощью (# 1) вместо (# 2), но мне интересно, есть ли решение для (# 2)? Я пытался
res = [ (lambda x: x + copy.deepcopy(i)) for i in range(start, end) ]
но это не помогает.
Спасибо.
WinXP + Python 3.2