在一个项目中,我需要多次遍历一个文本,该文本我是用csv.reader读取的。但后来发现,本文只对第一次循环有用,而之后的循环均为空白。经过排错后,我确定问题就出现在csv.reader()这一步。之后我不调用csv.reader读取文本,直接用readlines(),问题解决。之后查阅CSV模块的说明,发现reader其实是一个迭代器。以前并没有细究可迭代对象与迭代器之间的具体区别,因为以前的使用基本都是遍历文本一次。网上查资料发现:迭代器对象不支持重新迭代,也就是同一个迭代器对象无法多次迭代。

 In [19]: a = ListIter([1,2,3,4,5])

 In [20]: [i for i in a]
Out[20]: [1, 2, 3, 4, 5] In [21]: [i for i in a]
Out[21]: [] In [22]:

可见,再次迭代迭代器a的时候便只返回了空列表,这是因为for循环直接捕获了StopIteration异常。如果要再次迭代生成列表的话只能重新生成一个新的迭代器对象。

具体参见:http://python.jobbole.com/85240/

有些问题只有自己项目中经历了,折腾了,才会理解的更深刻。记录笔记,防止下次再掉进这个坑。

最新文章

  1. 用scikit-learn学习BIRCH聚类
  2. 栈的理解以及如何计算程序所需栈的大小并在IAR中设置栈
  3. 规则引擎集成接口(八)Java接口实例
  4. EI目录下载地址及保护密码
  5. KnockoutJS 3.X API 第一章 简介
  6. Swift3.0语言教程使用路径字符串
  7. JQuery-UI Dialog下使用服务器端按钮失效
  8. Gridview全选
  9. jquery ajax请求了两次问题
  10. angular+rails集成实战
  11. 玩转Firefox侧栏
  12. CSS背景图拉伸自适应尺寸
  13. Mysql创建和删除数据库
  14. 8.Flask-Script
  15. 浅谈JS的数组遍历方法
  16. python之count()函数
  17. java 常用命令
  18. mac安装ocr
  19. Highmaps网页图表教程之下载Highmaps与Highmaps的地图类型
  20. Search in Rotated Sorted Array II leetcode java

热门文章

  1. DIN(Deep Interest Network of CTR) [Paper笔记]
  2. windows添加默认路由
  3. 【微信小程序开发】快速开发一个动态横向导航模板并使用
  4. kafka消息传输时的对象转字符串时所需 -json String 转list 、set、 Long、 String 、map 与json Iterator遍历
  5. hdu 5225 Tom and permutation(回溯)
  6. 基于Handler架构的录音程序
  7. spool命令、创建一个表,创建而且copy表,查看别的用户下的表,rowid行地址 索引的时候使用,表的增删改查,删除表,oracle的回收站
  8. Git(二)Git几个区的关系与Git和GitHub的关联
  9. freemarker常见语法大全
  10. MPSOC之7——开发流程uramdisk