Позвольте мне взломать код для моего понимания
In [39]: [lambda: x for x in [1,5,7,3]]
Out[39]:
[<function <lambda> at 0x2cd1320>,
<function <lambda> at 0x2cd12a8>,
<function <lambda> at 0x2cd10c8>,
<function <lambda> at 0x2cd1050>]
выше дает список функций
In [40]: [lambda: x for x in [1,5,7,3]][1]
Out[40]: <function <lambda> at 0x2cd1488>
Индекс 1 дает 1 функцию из списка функций.
Теперь эта функция будет применяться к x, который всегда имеет последнее значение в списке. То, что у всегда дает последнее значение в качестве результата.
как в коде ниже.
In [41]: [lambda: 2][0]()
Out[41]: 2
In [42]: alist = [1,5,7,3,4,5,6,7]
x для x в [1,5,7,3] эквивалентно приведенной ниже функции f (x).
и
лямбда: х для х в [1,5,7,3] эквивалентно лямбда: 3
In [43]: def f(x):
....: for x in alist:
....: pass
....: return x
In [44]: print f(alist)
7