python--迭代器(Iterator)
2018-06-18 03:03:51来源:未知 阅读 ()
博客地址:http://www.cnblogs.com/yudanqu/
1、可迭代对象
- 在介绍迭代器之前呢,我们先聊一下可迭代对象(Iterable),可迭代对象就是可以直接作用于for循环的对象。
- 那么什么是可以直接用于for循环的呢?
- 可以直接用于for的数据类型一般分为两种:
1、集合数据类型,如list、tuple、dict、set、string……
2、generator,包括生成器和带yield的generator function
- 那么我们如何判断一个对象是否是可迭代对象呢?答:isinstance()
************************************************************************************************************************************
描述:isinstance() 函数来判断一个对象是否是一个已知的类型
语法:isinstance(object, classinfo)
参数:(1)object -- 实例对象
(2)classinfo -- 可以是直接或间接类名、基本类型或者由它们组成的元组
返回值:如果对象类型与classinfo的类型相同则返回True,否则返回False
************************************************************************************************************************************
那么我下面给大家看个小栗子:
在这里面,首先我导入的Iterable的包,也就是可迭代对象,下面的四条语句是分别查看列表、元组、字典、字符串的类型,可以看到他们四个都是可迭代对象,当然,可迭代对象远不止这些,这里只是给大家一个概念,并且看一下isinstance的使用方法。如果你还不能理解的话,可以想一下,你有没有写过这样一句话(for i in [1,2,3,4,5]),这是一个循环的表示方法,这里面就是在循环列表中的元素,来实现内部语句块。也可以说成是遍历这个列表,当然也就是迭代了。
2、迭代器
迭代器就是不但可以作用于for循环,还可以被next()不断的调用并返回下一个值,知道最后抛出一个错误StopIteration错误,表示无法继续返回下一个值。
对比:
可以被next()函数调用并不断返回下一个值得对象称为迭代器 (Iterator) 可以直接作用于for循环的对象统称为可迭代对象(Iterable)
下面又是一个小栗子:
里面的isinstance依然是判断类型,我们可以看到,(x for x in range(5))是一个迭代器,我们可以把这个迭代器用一个属性来接收,这样方便我们调用。注意上面提到的,迭代器是可以被next()调用的,所以我们next(L)来迭代输出里面的值。
现在的这些返回值为False,大家应该了解他的原因了吧,[](){}"" 等等这些都只是可迭代对象,而不是迭代器。(注意那两个单词是不一样的)
除此之外还需要说明的一点是,其他的数据类型也可以转为迭代器:
# 例如:列表转迭代器: a = iter([1,2,3,4]) print(next(a))
元组,字符串,字典都可以这样。
*下面用一个小案例让大家看下他的用法
endstr = 'end' str = "" for line in iter(input,endstr): str += line + '\n' print(str) #目的就是为了使input不直接退出,可以换行继续输入;而且在打印str时也可以分行同时打印
看一下效果:
迭代器大概就先介绍到这里,欢迎大家和我来一起学习。
作者:渔单渠(yudanqu)
博客地址:http://www.cnblogs.com/yudanqu/
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Python学习日记(十) 生成器和迭代器 2019-08-13
- python学习-38迭代器和生成器 2019-07-24
- Python--代码1(接口测试:测试用例从数据库读取写到yaml文 2019-07-24
- Python-10-迭代器 2019-07-24
- python--008文件处理 2019-07-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash