
Untitled
By: a guest on
May 1st, 2012 | syntax:
None | size: 0.97 KB | hits: 15 | expires: Never
Getting confused with lambda and list comprehension
In [1]: [lambda: x for x in range(5)][0]()
Out[1]: 4
In [2]: [lambda: x for x in range(5)][2]()
Out[2]: 4
In [4]: [lambda: x for x in [1,5,7,3]][0]()
Out[4]: 3
funcs = []
for x in range(5):
def f(): return x
funcs.append(f)
funcs[0]() # returns 4
x = 32
funcs[2]() # returns 32
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>
In [41]: [lambda: 2][0]()
Out[41]: 2
In [42]: alist = [1,5,7,3,4,5,6,7]
In [43]: def f(x):
....: for x in alist:
....: pass
....: return x
In [44]: print f(alist)
7
[(lambda(i): lambda: i)(x) for x in range(5)][2]()
[(lambda(i): lambda: i)(x) for x in range(5)][2]()
[lambda i=x: i for x in range(5)][2]()