Прочитайте вопрос о переполнении стека некоторое время назад со следующим синтаксисомпутаться с лямбда и список понимания
In [1]: [lambda: x for x in range(5)][0]()
Out[1]: 4
In [2]: [lambda: x for x in range(5)][2]()
Out[2]: 4
Но я имею трудное время, чтобы понять, почему именно выход этого приходит как 4, мой понимание всегда дает последнее значение списка в качестве выходного,
In [4]: [lambda: x for x in [1,5,7,3]][0]()
Out[4]: 3
, но до сих пор не уверен, как это синтаксис заканчивается с последним значением.
Был бы очень рад, если я могу получить надлежащее объяснение этого синтаксиса
Как вы думаете, вы могли бы найти этот вопрос, который вы упомянули? Это интересно, я тоже хотел бы это выяснить :) – kevintodisco
'В [84]: [z() для z in (lambda: x для x в диапазоне (5))]' 'Out [84]: [0, 1, 2, 3, 4] ' ' В [85]: [z() для z в [lambda: x для x в диапазоне (5)]] ' ' Out [85]: [4 , 4, 4, 4, 4] ' если генератор используется вместо понимания списка, то и выход будет отличаться! – shahjapan
@ktodisco: Я уверен, что это мой вопрос: http://stackoverflow.com/questions/9189702/python-closures-and-cells-closed-over-values –