深入了解暂缓列表生成器的
发布时间:2021-09-06 10:11:56
现在它运行良好,除非我们想要它停止,否则它会一直计算到我们指定的数字。但是,如果我们想要更改停止的条件,我们就必须重写这个函数。但是我们可以用生成器来实现它(从python的《\"PEP生成器》一文借用的实现):
def xfib():...a,b = 0,1...while True:...yield b...a, b = b, a+b... fibseries = xfib() b = xt() while b 20:...print b...b = xt()... 或者,如果我们想要在第一个回文(超过一位)处停止,我们只需要改变循环条件就行了:
fibseries = xfib()
b = xt()
while b 10 or not list(str(b)) == list(reversed(str(b))):
... print b
... b = xt()
...
1
1
2
3
5
8
13
21
34
这就行了(这个数列的下一个值是55)。但是我们通过使用生成器可以让列表生成实现与什么时候停止生成它的逻辑分离,同时只用计算我们需要的那么多值。
你应该在什么时候使用生成器而不用列表推导呢?首先,如果你准备使用完整的列表,你就最好使用列表推导——它们的速度会更快一些,因为不会有调用生成器函数所增加的系统开销。如果你准备使用列表的第一部分,那就使用生成器吧,因为这会节约你的CPU时间。
工人素质、物流商业环境、基础配套设施、税收商务环境 :德东
查看本文国际来源
查看Nick Gibson专栏文章
天津看白癜风权威医院济南哪里有白癜风医院
南京治疗男科费用