关于Python的生成器的一些简单问题。我关于生成器这部分学得有点晕,如果问题问的有点傻请请不要介意。

1.generator的本质是否就是列出一段算式,然后让计算机自己推导?2.生成器和循环以及列表生成式有什么区别?3.generator能不能用索引?... 1.generator的本质是否就是列出一段算式,然后让计算机自己推导?2.生成器和循环以及列表生成式有什么区别?3.generator能不能用索引? 展开
 我来答
sylecn
2016-06-23 · TA获得超过2991个赞
知道大有可为答主
回答量:1169
采纳率:57%
帮助的人:715万
展开全部
  1. 不是。生成器不涉及到任何推导。只是定义好计算方式,每次调用仅生成一个数据(执行到下一次yield)即返回调用端。

  2. 生成器是一种(惰性)生成数据的方式。循环是一种程序结构控制工具/语法。列表生成式是生成列表的一种语法结构。这些东西都可以用来做遍历、迭代。各有优缺点。

  3. generator不支持索引。


常用程序里面生成器使用场景并不多,如果不理解可以先略过。生成器的优点是可以支持惰性计算;可以用来做执行流程跳转。缺点在于只能遍历一次;调试不方便。

追问
>>> g = (x * x for x in range(10))
>>> g
at 0x104feab40>

那这个程序最后的g返回的一段是怎么回事?
追答
这个是 generator expression,和 generator function 是不一样的。通常单独提generator指的是 generator function.

generator expression和list comprehension写法比较接近,只是结果返回的形式也是一个generator。这里打印的g表示g是一个generator expression, 因为是惰性的,所以直接打印g不会做任何实际运算。如果要获取g里面的元素,需要遍历。比如for循环,或者转换为list.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式