Python的迭代协议和迭代环境
2017-07-02 13:16
78 查看
Python的迭代协议:有__next__方法的对象会前进到下一个结果,而在一系列末尾时,则会引发StopIteration异常。任何这类对象都认为是可迭代的。任何这类对象也能以for循环或其它迭代工具遍历,因为所有迭代工具内部工作起来都是在每次迭代中调用__next__方法(由next内置函数运行,2.x和3.x都是这样的!?),并且捕捉StopIteration异常来确定何时离开。
for循环和列表解析的直接关系:两者都是迭代工具。列表解析简单、高效的执行for循环任务:对可迭代对象内所有对象应用一个表达式,并收集其结果。可以把列表解析转换成for循环,而列表解析表达式的一部分的语法看起来就像是for循环的首行。
Python中的迭代环境:for循环、列表解析、map内置函数、in成员关系测试表达式以及内置函数sorted、zip、sum、any和all。这个分类也包括内置函数list、tuple和字符串join方法以及序列赋值运算。所有这些都是用了迭代协议(next方法)来一次一个元素逐个遍历可迭代对象。
逐行读取文本文件的最佳方法:不要可以去读取文件,作为替代方法,在迭代环境中打开文件,诸如for循环和列表解析中,然后让迭代工具在每次迭代中执行该文件的next方法,自动一次扫描一行。从代码编写的简易性、执行速度以及内存空间的需求方面看,这中做法通常是最佳的。
Python3.x对迭代做出的改变:相比2.x更强调迭代。除了文件和字典这样的内置类型相关的迭代,字典方法keys、values和items在3.x中返回的都是可迭代对象,就像内置函数range、map、zip和filter所做的那样。这些函数最后三个都返回可迭代对象并处理他们。所有这些工具在3.x中都根据请求结果,而不是像2.x中构建结果列表。
# in python 3.x >>>zip('abc', 'xyz') <zip object at 0x02E66710> # in python 2.x >>>zip('abc', 'xyz') [('a', 'x'), ('b', 'y'), ('c', 'z')]
相关文章推荐
- python环境的搭建(MAVLink协议生成器)
- python中的迭代协议
- python3环境下的TCP协议与UDP协议的socket编程
- Python 迭代器协议以及可迭代对象、迭代器对象
- python 迭代器与生成器即迭代协议的特别说明
- Linux环境下MySQL-python使用小记
- Python环境编码与MySQL中文编码操作
- 为 Python Server Pages 和 Oracle 构建快速 Web 开发环境。
- Diameter协议及其在SIP网络环境中的应用
- 支持msnp15协议python可发送离线消息脚本附录2
- Redhat linux AS4 环境下iSCSI协议配置
- Windows下用Editplus打造一个Python调试环境 - 转
- 用vim搭建python开发环境[zz]
- 配置 Python 可视开发环境
- ipython 最好用的交互python环境
- 由于Python本身自带的界面库功能并不强大,我们使用Python+wxPython作为界面开发平台,在公司新的项目中进行界面开发。开发过程使用Eclipse+PyDev 作为集成开发环境。产品发布时使用Py2exe进行打包。如今,在我的团队中,Pytho
- [转]PHP在RS232串口通讯协议的应用演示[测试环境WinXP/PHP5.1.4]
- python开发环境:eclipse + pydev
- [转]最佳python开发环境: eclipse+pydev
- python小例子之6 -- pop3协议收取邮件