Python 之道

对 a = [lambda : x for x in range

2018-10-28  本文已影响3人  seniusen
>>> a = [lambda : x for x in range(3)]
>>> a
[<function <listcomp>.<lambda> at 0x7f79c874ae18>, 
<function <listcomp>.<lambda> at 0x7f79c874aea0>, 
<function <listcomp>.<lambda> at 0x7f79c874af28>]
>>> a[0]()
2
>>> a[1]()
2
>>> a[2]()
2
>>>
>>> a = []
>>> for i in range(3):
...     a.append(lambda:i)
... 
>>> a
[<function <lambda> at 0x7f79c88022f0>, 
<function <lambda> at 0x7f79c8802378>, 
<function <lambda> at 0x7f79c8802400>]
>>> a[0]()
2
>>> a[1]()
2
>>> a[2]()
2
>>> i
2
>>> i = 10
>>> a[2]()
10
>>> 
>>> a = [lambda x=x : x for x in range(3)]
>>> a[0]()
0
>>> a[1]()
1
>>> a[2]()
2
>>> a[2](10)
10
>>> a = (lambda:x for x in range(3))
>>> a
<generator object <genexpr> at 0x7f79c8f08200>
>>> next(a)
<function <genexpr>.<lambda> at 0x7f79ca827f28>
>>> next(a)
<function <genexpr>.<lambda> at 0x7f79c88022f0>
>>> next(a)
<function <genexpr>.<lambda> at 0x7f79ca827f28>
>>> next(a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
>>> a = (lambda:x for x in range(3))
>>> next(a)()
0
>>> next(a)()
1
>>> next(a)()
2
>>> next(a)()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
>>>

获取更多精彩,请关注「seniusen」!


上一篇 下一篇

猜你喜欢

热点阅读