10 ms·
Lambda is fine. The loops are mutating the variable i, so all the lambda share the same i. Apparently, list comprehensions also use mutation--I suppose that's
by enum 17y ago
Lambda is fine. The loops are mutating the variable i, so all the lambda share the same i. Apparently, list comprehensions also use mutation--I suppose that's fine.
- scott_s 17y agoIndeed, Python is using lexical scoping. This behavior is well known.
- jrockway 17y agoWhile true, that is not really the issue. The issue is which lexical scope the loop iterator is defined in. In python, it is apparently like this: i = 0 increment i <do loop body with i> It could have been: i = 0 increment 1 create new environment bind i here <do loop body> In the second case, each loop body would have its own "i". In the first case, they all share the same "i".