Я немного сбиваю с толку, когда пытаюсь что-то подобное
b = [lambda x:x**i for i in range(11)]
Когда я тогда пытаюсь b[1](2)
, в результате получается 1024, что неверно. Но когда я пишу так
b = [(lambda i: lambda x:x**i)(i) for i in range(11)]
все в порядке
>>> b[1](2)
2
>>> b[5](2)
32
Работает нормально, но что не так в первом коде?