Python 生成器与列表解析

列表解析:

l = [i**2 for i in range(4)]

 

result: l = [0,1,4,9]

 

生成器:

l = (i**2 for i in range(4))

result: l = <generator object <genexpr> at 0x0000000003512B88>

 

生成器的方法在效率上更高,但是生成器的迭代是不可回溯的。比如,在for迭代访问生成器之后,想要再次for循环访问时,生成器l就是空的了,l.next()也会抛出异常。

另外,生成器时没有下标的,但是可以通过enumerate(l) 来返回由(index,value)这样的元祖组成的enumerate类型的变量,enumerate类型也是可迭代的,但是和生成器一样,是不能回溯的,单向迭代。

 

posted @ 2013-09-13 13:48  EthanChou  阅读(188)  评论(0)    收藏  举报