Python学习笔记-04-迭代器和解析之初见
2018-03-25 13:46
274 查看
惊鸿一瞥
中华文化博大精深,我想先就本次主题中的关键字迭代器的相关术语进行区分定义,然后再开展之后的分析,好了,我们开始吧!可迭代对象:可迭代对象是指那些可以被用来迭代的对象,通俗的说就是可以被迭代工具迭代的对象。例如Python中的列表,元组,字符串以及range( I )、zip(seq1, seq2)、map(fun, seq)、filter(fun, seq),open( file ),os.popen( shell )等函数返回的结果都可以称之为可迭代对象,他们遵守迭代协议,能够被依次从左至右的顺序进行扫描。
迭代器:这个概念与上面的概念有所不同,如果从集合论的角度看的话,二者之间应该是真包含的关系,即可迭代对象真包含迭代器,就好比NP真包含P,因为所有的迭代器一定是可迭代的,但并非所有的可迭代对象都是迭代器。
定义:指的是iter函数调用所返回的一个支持next(I)的对象。一般可以采用 iter(obj) == obj来判断对象自身是否就是自身的迭代器。
例如:列表是可迭代的对象,但却不能称之为迭代器,os.popen( )函数返回的结果是可迭代的对象,但是也不能称之为迭代器。前者很好理解,后者可能有点费解,首先os.popen()函数的参数是shell命令,该函数返回的结果便是shell命令输出的结果近似迭代器版本。由于os.popen()返回的结果不支持内置的next()函数,只支持自身的_ _ next_ _ ( )方法,所以不能称之为迭代器。
例如常见的迭代器有,zip(seq1, seq2)、map(fun, seq)、filter(fun, seq),open( file )函数返回的结果。
迭代工具:使用迭代协议迭代可迭代对象的工具。例如for循环,列表解析,in成员关系测试,map(),zip(),filter(),range(),list(),tuple(),sorted(),reversed()内置函数,这些函数使用迭代协议作用于传入的参数,所以可以称之为迭代工具,而且前面三个的返回值同时还是迭代器!后两个返回的结果是列表!还有字符串的join方法,甚至包括序列赋值!functools.reduce(),enumerate(),sum(),any(),all(),max(),min()
迭代协议:有_ _ next _ _方法的对象会前进到下一个结果,而在一系列结果的末尾时,则会引发StopIteration异常。
代码示例
多个迭代器 VS 单个迭代器相关文章推荐
- 迭代器和解析——Python(学习笔记)
- python学习手册笔记--第14.20章--迭代器和解析
- 15. Python脚本学习笔记十五特殊方法、属性和迭代器
- XML学习以及python解析xml笔记
- Python学习之路18——控制语句,迭代器, 列表解析
- Python学习笔记 迭代器
- Python学习笔记--迭代器&生成器
- Python语言程序设计-学习笔记3:Python编程之实例解析
- 【Python学习】python学习手册--第十四章 迭代器和解析 第一部分
- python网络编程学习笔记(八):XML生成与解析(DOM、ElementTree)
- 类的使用与未知对象的解析--python笔记--廖雪峰站学习笔记(三)
- python学习笔记三:解析html(HTMLParser、SGMLParser),并抓取图片
- 编程小白的第一本 python 入门书 学习笔记04 第五章 循环与判断
- python学习笔记-函数式编程、迭代器和生成器
- Python笔记(五)迭代器和解析
- Python高级特性(切片 迭代 列表生成式 生成器 迭代器)学习笔记
- <<Python基础教程>>学习笔记 | 第09章 | 魔法方法、属性和迭代器
- python cookbook第三版学习笔记六:迭代器与生成器
- python学习笔记-04
- python 学习笔记(8)高级迭代器