首页 » 静下心来看python » 正文

[静下心来看python]-[13]-[yield]

列表解析:
[expr for iter_var in iterable if cond_expr]

生成器表达式:
(expr for iter_var in iterable if cond_expr)

生成器最大的却别是它并不返回一个真正的数组

只有在调用的时候,才会真在的变成实实在在的值,所以它并不是把所有的值放到内存中,所以你只能循环一次

 

yield 则是这个神奇的东西,和return一样,他返回东西,但他返回的是一个生成器,而不是立即执行

直观一点就是,比如

你要求和,求一个很大很大的数组里边的所有的数组的和,然后内存不够大的化,你肯定求不了,因为[1,2.3,4……]太大了,内存放不开

但是如果你用生成器生成一个一样的数组,(1,2,3,….),你就可以了

 

(就是说明一下,代表100000000000很大)

因为生成器就是 生成一个,删掉一个,然后下一个,所有不用太占内存

 

 

Zhiming Zhang

Senior devops at Appannie
一个奔跑在运维路上的胖子
Zhiming Zhang

Latest posts by Zhiming Zhang (see all)