標籤:
什麼是迭代器:
它為類序列對象提供了一個類序列的介面。它們是一組資料結構,你可以利用它們的索引從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,aaaabbbbcccc>>>myFile.close()
3.如何建立迭代器
對一個對象調用iter()就可以得到它的迭代器。它的文法如下:
iter(obj)
iter(func, sentinel)
如果你傳遞一個值給iter(),它會檢查你傳遞的是不是一個序列,如果是,則根據索引從0一直迭代到序列結束。
如果你傳遞了兩個值給iter(),它會重複地調用func,直到迭代器的下一個值等於sentinel。
Python學習筆記——迭代器