The problem is that, as people say, is inot a local variable lambda. You should fix this: using the default parameter value, changing during the loop:
>>> def multipliers():
l = []
for i in range(4):
l.append(lambda x, i=i : x * i )
return l
>>> lst = multipliers()
>>> lst[0](2)
0
>>> lst[1](2)
2
>>> lst[2](2)
4
>>> lst[3](2)
6
>>>
source
share