生成器概念辨析(generator)
本质上是一种边循环边计算的机制,不像函数那样预先计算出所有值,而是需要时再打印,节省了空间
a = [i*i for i in range(5)] print(a) #打印结果为[0,1,4,9,16]
在列表生成式a中,一旦定义了列表里的元素数量和相互关系,调用print时就会预先计算好所有元素的值并打印
b = (i*i for i in range(5)) print(b) #打印结果为<generator object <genexpr> at 0x00467BA0>
b = (i*i for i in range(5))
print(b(0))
#报错: ‘generator‘ object is not callable
在生成器b中,无法像之前类似的语法那样打印所有值,因为print不能调用到b,实际上除了next(),其他函数均无法调用到b的值。
b = (i*i for i in range(5)) for i in b: print(i) #打印结果为 #0 #1 #4 #9 #16
通过for循环取得b内的值