什么是迭代器:
它为类序列对象提供了一个类序列的接口。它们是一组数据结构,你可以利用它们的索引从0开始一直“迭代”到序列的最后一个条目。
如何用迭代器:
(1)序列中的使用
>>>myTuple = (1, 2, 3) >>>i = iter(myTuple) >>>i.next() 1 >>>i.next() 2 >>>i.next() 3 >>>i.next() Traceback (most recent call last): File "", line 6, in <module> i.next() StopIteration
(2)字典中的使用
字典的迭代器会遍历它的键(key)。语句for eachKey in myDict.keys()可以缩写为for eachKey in myDict
>>>dict1={(‘Poe‘,‘author‘):(1809,1849,1976), ...(‘Gaudi‘,‘architect‘):(1852,1906,1987)} >>>for eachdict in dict1: ... print ‘Name: %s\tOccupation: %s‘ % eachdict ... print ‘ Birth: %s\tDeath: %s\t Album: %s\n‘ ... % dict1[eachdict] Name: poe Occupation:author Birth:1809 Death:1849 Album:1976 Name: Gaudi Occupation:architect Birth:1852 Death:1906 Album:1987
另外,Python还引进了三个新的内建字典方法来定义迭代:myDict.iterkeys()(通过键迭代),myDict.itervalues()(通过值迭代)及myDict.iteritems()(通过键-值对来迭代)。
(3)文件中的使用
文件对象生成的迭代器会自动调用readline()方法。这样,循环就能访问文本文件的所有行。
>>>myFile = open(‘C:\\Users\\tyy\\Desktop\\xxx.txt‘) >>>for eachLine in myFile: print eachLine, aaaa bbbb cccc >>>myFile.close()
3.如何创建迭代器
对一个对象调用iter()就可以得到它的迭代器。它的语法如下:
iter(obj)
iter(func, sentinel)
如果你传递一个值给iter(),它会检查你传递的是不是一个序列,如果是,则根据索引从0一直迭代到序列结束。
如果你传递了两个值给iter(),它会重复地调用func,直到迭代器的下一个值等于sentinel。
时间: 2024-11-05 14:52:02