suzuzusu日記

(´・ω・`)

Python for文 スコープ

ハマったので戒めとしてのメモ

Pythonのfor文にはスコープがない

一度lambdaで包む必要がある

>>> map(lambda f: f(), [lambda : i**2 for i in range(5)])
[16, 16, 16, 16, 16]
>>> map(lambda f: f(), [(lambda j: lambda : j**2)(i) for i in range(5)])
[0, 1, 4, 9, 16]