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类型也是可迭代的,但是和生成器一样,是不能回溯的,单向迭代。
浙公网安备 33010602011771号