码迷,mamicode.com
首页 > 编程语言 > 详细

Python 生成器

时间:2019-11-01 22:24:11      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:range   display   bsp   abc   使用   cti   control   一个   生成   

Python 生成器

来自https://www.runoob.com/python3/python3-iterator-generator.html

转自https://www.liaoxuefeng.com/wiki/1016959663602400/1017323698112640 

可以直接作用于for循环的数据类型有以下几种:

一类是集合数据类型,如listtupledictsetstr等;

一类是generator,包括生成器和带yield的generator function。

这些可以直接作用于for循环的对象统称为可迭代对象:Iterable

可以使用isinstance()判断一个对象是否是Iterable对象:

>>> from collections import Iterable
>>> isinstance([], Iterable)
True
>>> isinstance({}, Iterable)
True
>>> isinstance(abc, Iterable)
True
>>> isinstance((x for x in range(10)), Iterable)
True
>>> isinstance(100, Iterable)
False

而生成器不但可以作用于for循环,还可以被next()函数不断调用并返回下一个值,直到最后抛出StopIteration错误表示无法继续返回下一个值了。

生成器都是Iterator对象,但listdictstr虽然是Iterable,却不是Iterator

listdictstrIterable变成Iterator可以使用iter()函数:

>>> isinstance(iter([]), Iterator)
True
>>> isinstance(iter(abc), Iterator)
True

 

Python 生成器

标签:range   display   bsp   abc   使用   cti   control   一个   生成   

原文地址:https://www.cnblogs.com/swordsman180309/p/11779826.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!