Chinaunix首页 | 论坛 | 博客
  • 博客访问: 273995
  • 博文数量: 36
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 411
  • 用 户 组: 普通用户
  • 注册时间: 2015-05-04 22:05
个人简介

追求永无止境

文章分类
文章存档

2016年(3)

2015年(33)

分类: Python/Ruby

2015-08-28 16:18:25

迭代器就是有一个next()方法的对象,而不是通过索引来计数。当使用一个循环机制需要下一个项时,调用迭代器的next()方法,迭代完后引发一个StopIteration异常。
迭代器限制:不能向后移动、不能回到开始、再次迭代只能创建另一个迭代对象。
反序迭代工具:reversed()将返回一个反序访问的迭代器。
python中提供的迭代模块:itertools模块
第一、迭代序列:

点击(此处)折叠或打开

  1. >>> myTuple = ('xyz',123,34.56)
  2. >>> myTuple
  3. ('xyz', 123, 34.56)
  4. >>> i = iter(myTuple)
  5. >>> i.next()
  6. 'xyz'
  7. >>> i.next()
  8. 123
  9. >>> i.next()
  10. 34.56
for循环的迭代其实是这样工作的:(for循环会自动调用迭代器的next()方法。)

点击(此处)折叠或打开

  1. fetch = iter(seq)
  2. while True:
  3.   try:
  4.     i = fetch.next()
  5.   except StopIteration:
  6.     break
  7.   do_something_to(i)
第二、字典的迭代器会遍历字典的键(key),
字典的迭代实例:

点击(此处)折叠或打开

  1. >>> legends = {('poe','author'):(1809,1849,1976),('Gaudi','architect'):(1852,1906,1987),('Freud','psychoanalyst'):(1856,1939,1990)}
  2. >>> for eachLegend in legends:
  3.     print 'Name:%s\tOccupation:%s' % eachLegend
  4.     print 'Birth:%s\tDeath:%s\tAlbum:%s\n' % legends[eachLegend]

  5.     
  6. Name:poe    Occupation:author
  7. Birth:1809    Death:1849    Album:1976

  8. Name:Gaudi    Occupation:architect
  9. Birth:1852    Death:1906    Album:1987

  10. Name:Freud    Occupation:psychoanalyst
  11. Birth:1856    Death:1939    Album:1990
第三、文件对象生成的迭代器会自动调用readline()方法,这样循环遍历就可以访问文本文件的所有行。
文件执行过程:

点击(此处)折叠或打开

  1. myFile = open('config-win.txt')
  2. for eachLine in myFile:
  3.   print eachLine


阅读(4030) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~