Hello

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方法,以读取一行。

posted @ 2017-09-11 23:03  ziyi93  阅读(356)  评论(0编辑  收藏  举报