迭代器就是有一个next()方法的对象,而不是通过索引来计数。当使用一个循环机制需要下一个项时,调用迭代器的next()方法,迭代完后引发一个StopIteration异常。
迭代器限制:不能向后移动、不能回到开始、再次迭代只能创建另一个迭代对象。
反序迭代工具:reversed()将返回一个反序访问的迭代器。
python中提供的迭代模块:itertools模块
第一、迭代序列:
-
>>> myTuple = ('xyz',123,34.56)
-
>>> myTuple
-
('xyz', 123, 34.56)
-
>>> i = iter(myTuple)
-
>>> i.next()
-
'xyz'
-
>>> i.next()
-
123
-
>>> i.next()
-
34.56
for循环的迭代其实是这样工作的:(for循环会自动调用迭代器的next()方法。)
-
fetch = iter(seq)
-
while True:
-
try:
-
i = fetch.next()
-
except StopIteration:
-
break
-
do_something_to(i)
第二、字典的迭代器会遍历字典的键(key),
字典的迭代实例:
-
>>> legends = {('poe','author'):(1809,1849,1976),('Gaudi','architect'):(1852,1906,1987),('Freud','psychoanalyst'):(1856,1939,1990)}
-
>>> for eachLegend in legends:
-
print 'Name:%s\tOccupation:%s' % eachLegend
-
print 'Birth:%s\tDeath:%s\tAlbum:%s\n' % legends[eachLegend]
-
-
-
Name:poe Occupation:author
-
Birth:1809 Death:1849 Album:1976
-
-
Name:Gaudi Occupation:architect
-
Birth:1852 Death:1906 Album:1987
-
-
Name:Freud Occupation:psychoanalyst
-
Birth:1856 Death:1939 Album:1990
第三、文件对象生成的迭代器会自动调用readline()方法,这样循环遍历就可以访问文本文件的所有行。
文件执行过程:
-
myFile = open('config-win.txt')
-
for eachLine in myFile:
-
print eachLine
阅读(4030) | 评论(0) | 转发(0) |