生成器面试题(你真的了解Python生成器吗?)
【摘要】 生成器面试题(你真的了解Python生成器吗?)
文章目录
🦠面试题一(难度为中等偏上且必须掌握)
🏵️🏵️题目要求
以下代码执行后的输出结果是什么?
🏵️🏵️题目提示
1、同一个生成器中的数据只能取一次,取完就没有了
2、生成器的特点惰性运算:不找生成器取值,它就根本不工作
🏵️🏵️流程图分析
🏵️🏵️答案以及解析
✨运行结果✨
✨解析✨
1、先定义了三个生成器g、g1、g2
2、因为遇到了list(g1),所以list要向g1要值,由于g1 = (i for i in g),所以g1又向g要值然后g执行依次返回0,1,2,3给g1,g1又依次返回给list,所以最后打印出了[0,1,2,3]
下一步执行list(g2)所以g2要向g1要值。因为g1的值在list(g1)的时候都给了list,所以g1里面已经没有值了,所以g1更不会向g取值,所以list(g2)打印出的只是一个空列表
✨拓展思考✨
如果将print(list(g1))注释掉打印出的结果是什么:
因为没有list(g1)向g1要值,所以g是不为空的,所以list(g2)打印的结果是[0,1,2,3]
🦠面试题二(难度为难且必须掌握)
🏵️🏵️题目要求
下列代码执行后的输出结果是什么:
🏵️🏵️题目提示
将代码中的
用以下代码替换之后在思考一下
🏵️🏵️答案以及解析
✨运行结果✨
✨解析✨
将提示中的代码进一步替换
替换为以下代码:
题目就可以替换为
所以代码运行结果为:[20, 21, 22, 23]就显而易见了
如果面试题三已经明白了,那就做一下面这个进阶版的面试题三吧(如果还没懂的话额…那就多看几遍吧相信一定会看懂💪💪)
🦠面试题三进阶版
🏵️🏵️题目要求
下列代码执行后的输出结果是什么?
🏵️🏵️答案以及解析
✨运行结果✨
✨解析✨
可以将代码等价为如下代码
相信通过上面的代码你就可以更好的了解题目,和答案的产生了到此本次分享就结束了😊😊
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)