for迴圈可以迭代序列物件,從左到右遍歷序列物件的元素。這裡for迴圈屬於迭代工具,而序列屬於可迭代物件,兩者通過迭代協議聯絡。
python提供了內建函式next,以迭代器做輸入,每次返回序列的下一元素,直到序列末尾,引發異常:
>>>i = iter([1, 2, 3, 4])
>>>next(i)
1>>>next(i)
2>>>next(i)
3>>>next(i)
4>>>next(i)
traceback (most recent call last):
file
"", line 1, in
stopiteration
而迭代器自身包含next()方法,效果和內建函式next()是一樣的。這就是所謂的迭代協議:有next()方法的物件讀取下乙個元素,直到末尾觸發stopiteration異常。所有的迭代工具內部都是在每次迭代時呼叫next()方法。
注意,檔案物件本身就是其迭代器,有next()方法。而列表、元組、字典雖然是可迭代物件,但本身並不是迭代器,需要顯式地轉換成迭代器:i = iter(l)
,然後才能呼叫next()方法。
迭代器和解析
for迴圈可以用於python中的任何序列型別,包括列表 元組以及字串。實際上,for迴圈甚至比這更為通用 可用於任何可迭代的物件。實際上,對python中所有會從左至右掃瞄物件的迭代工具而言都是如此,這些迭代工具包括了for迴圈 列表解析 in成員關係測試以及map內建函式等。檔案迭代器 已開啟的...
python學習手冊筆記 20 迭代和解析
00.由於python程式設計中的一種常見任務,python最終產生了一種新的表示式 列表解析,它甚至比我們前面學習的工具更靈活。簡而言之,列表解析把任一乙個表示式而不是乙個函式應用於乙個迭代物件中的元素。01.列表解析在乙個序列的值上應用乙個任一表示式,將其結果收集到乙個新的列表中並返回。02.實...
python學習手冊筆記 20 迭代和解析
00.由於python程式設計中的一種常見任務,python最終產生了一種新的表示式 列表解析,它甚至比我們前面學習的工具更靈活。簡而言之,列表解析把任一乙個表示式而不是乙個函式應用於乙個迭代物件中的元素。01.列表解析在乙個序列的值上應用乙個任一表示式,將其結果收集到乙個新的列表中並返回。02.實...