python习题——迭代器
1. for循环和迭代器之间有什么关系?
for语句接受一个可迭代对象作为其参数,并会使用迭代协议来遍历迭代对象中的每一个项,每次迭代中调用该对象的__next__方法(通过next内置函数调用),而且会捕捉StopIteration异常,一旦捕捉到StopIteration异常,将会停止循环。
2. for循环和列表解析有什么关系?
两者都是迭代工具,列表解析是一种简单高效的方法,它对可迭代对象中所有元素应用一个表达式,并收集结果。也可以用for循环实现列表解析的目的,只不过执行速度可能会慢点,代码行数肯定会增加。
3. 举出Python中的四种迭代环境
- for循环
- 列表|字典|集合 解析式
- map|reduce|filter|enumerate|sorted|zip|sum|any|all|max|min|...内置函数
- 字符串join方法
- in成员关系测试表达式
所有这些都使用了迭代协议(next方法)来一次一个元素逐个遍历可迭代对象。
4. 如今从一个文本文件逐行读取行的最好方法是什么?
要记住,千万不要一次读取所有内容到内存,会有爆掉的危险,最好的方法就是在迭代环境中打开文件,比如for循环或列表解析式中,然后让迭代工具每次调用文件对象的next方法,以读取一行。