迭代器
迭代是訪問集合元素的一種方式。迭代器是乙個可以記住遍歷的位置的物件。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。
可迭代物件
以直接作用於 for 迴圈的資料型別有以下幾種:
一類是集合資料型別,如 list 、 tuple 、 dict 、 set 、 str 等;
一類是 generator ,包括生成器和帶 yield 的generator function。
這些可以直接作用於 for 迴圈的物件統稱為可迭代物件: iterable 。
判斷是否可以迭代(iterable)
可以使用 isinstance() 判斷乙個物件是否是 iterable 物件:
in [50]: from collections import iterable
in [51]: isinstance(, iterable)
out[51]: true
in [52]: isinstance({}, iterable)
out[52]: true
in [53]: isinstance('abc', iterable)
out[53]: true
in [54]: isinstance((x for x in range(10)), iterable)
out[54]: true
in [55]: isinstance(100, iterable)
out[55]: false
而生成器不但可以作用於 for 迴圈,還可以被 next() 函式不斷呼叫並返回下乙個值,直到最後丟擲 stopiteration 錯誤表示無法繼續返回下乙個值了。
迭代器(iterator)
可以使用 isinstance() 判斷乙個物件是否是 iterator 物件:
in [56]: from collections import iterator
in [57]: isinstance((x for x in range(10)), iterator)
out[57]: true
in [58]: isinstance(, iterator)
out[58]: false
in [59]: isinstance({}, iterator)
out[59]: false
in [60]: isinstance('abc', iterator)
out[60]: false
in [61]: isinstance(100, iterator)
out[61]: false
iter()函式
生成器都是 iterator 物件,但 list 、 dict 、 str 雖然是 iterable ,卻不是 iterator 。
把 list 、 dict 、 str 等 iterable 變成 iterator 可以使用 iter() 函式:
in [62]: isinstance(iter(), iterator)
out[62]: true
in [63]: isinstance(iter('abc'), iterator)
out[63]: true
總結凡是可作用於 for 迴圈的物件都是 iterable 型別;
凡是可作用於 next() 函式的物件都是 iterator 型別
集合資料型別如 list 、 dict 、 str 等是 iterable 但不是 iterator ,不過可以通過 iter() 函式獲得乙個 iterator 物件。
python中迭代器的基本方法 Python迭代器
迭代器是可以迭代的物件。在本教程中,您將了解迭代器的工作原理,以及如何使用 iter 和 next 方法構建自己的迭代器。迭代器在python中無處不在。它們優雅地實現在迴圈,推導,生成器等中,但隱藏在明顯的視覺中。python中的迭代器只是乙個可以迭代的物件。乙個將一次返回資料的物件或乙個元素。從...
python的迭代器 python 迭代器
在介紹迭代器之前,先說明下迭代的概念 迭代 通過for迴圈遍歷物件的每乙個元素的過程。python的for語法功能非常強大,可以遍歷任何可迭代的物件。在python中,list tuple string dict set bytes都是可以迭代的資料型別。可以通過collections模組的iter...
python的迭代器 Python 迭代器
概述迭代器是訪問集合元素的一種方式。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。延遲計算或惰性求值 lazy evaluation 迭代器不要求你事先準備好整個迭代過程中所有的元素。僅僅是在迭代至某個元素時才計算該元素,而在這之前或之後,元素可以不存在或...