您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

清华大学计算机硕士为大家带来史上最详细的生成器的使用技巧!

5b51 2022/1/14 8:25:04 python 字数 7729 阅读 799 来源 www.jb51.cc/python

0.本集概览 1.生成器可以避免一次性生成整个列表 2.生成器函数的运行过程解析及状态保存

概述

1.生成器可以避免一次性生成整个列表

2.生成函数的运行过程解析及状态保存

3.生成器表达式的使用方法

4.生成器表达式的可迭代特性

清华大学计算机硕士为大家带来史上最详细的生成器的使用技巧!

进群:125240963   即可获取数十套PDF哦!

下面具体结合例子说说生成函数

2.1.运行过程分析

首先,我们还没有详细介绍过函数,先简单说一下,常规函数接受输入的参数然后立即送回单个结果,之后这个函数调用就结束了。

清华大学计算机硕士为大家带来史上最详细的生成器的使用技巧!

清华大学计算机硕士为大家带来史上最详细的生成器的使用技巧!

清华大学计算机硕士为大家带来史上最详细的生成器的使用技巧!

清华大学计算机硕士为大家带来史上最详细的生成器的使用技巧!

运行结果:

清华大学计算机硕士为大家带来史上最详细的生成器的使用技巧!

那这么看,在for循环等真正的使用场景中使用也不难了 代码片段:

清华大学计算机硕士为大家带来史上最详细的生成器的使用技巧!

清华大学计算机硕士为大家带来史上最详细的生成器的使用技巧!

运行结果:

2.2.状态保存

我们进一步来说说生成函数里状态保存的话题。在每次循环的时候,生成函数都会在yield处产生一个值,并将其返回给调用者,即for循环。然后在yield处保存内部状态,并挂起中断退出。在下一轮迭代调用时,从yield的地方继续执行,并且沿用上一轮的函数内部变量的状态,直到内部循环过程结束。

关于这个问题,具体可以看看这个例子:

代码片段:

清华大学计算机硕士为大家带来史上最详细的生成器的使用技巧!

运行结果:

清华大学计算机硕士为大家带来史上最详细的生成器的使用技巧!

我们不难发现,生成函数计算出x的平方后就挂起退出了,但他仍然保存了此时x的值,而yield后的print语句会在for循环的下一轮迭代中首先调用,此时x的值即是上一轮退出时保存的值。

再说说生成器表达式吧。

3.1.使用方法

列表解析式已经是一个不错的选择,从内存使用的角度而言,生成器更优,因为他不用一次性生成整个对象列表,这二者之间如何转化呢?

生成器表达式写法上很像列表解析式,但是外面的方括号换成了圆括号,结果大不同,简单的看看: 代码片段:

运行结果:

清华大学计算机硕士为大家带来史上最详细的生成器的使用技巧!

运行结果:

代码片段:

运行结果:

代码片段:

运行结果:

代码片段:

运行结果:

3.3.集合解析式与生成器对象

集合解析式等效于将生成器对象传入到list、set、dict等函数中作为构造参数 代码片段:

清华大学计算机硕士为大家带来史上最详细的生成器的使用技巧!

清华大学计算机硕士为大家带来史上最详细的生成器的使用技巧!

总结

以上是编程之家为你收集整理的清华大学计算机硕士为大家带来史上最详细的生成器的使用技巧!全部内容,希望文章能够帮你解决清华大学计算机硕士为大家带来史上最详细的生成器的使用技巧!所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶