python的迭代器和生成器

2021-10-09 04:43:36 字數 609 閱讀 5981

迭代器

python中有許多態別的物件可以被定義為可迭代的。基本的容器型別,如列表、元組和集合,都可以定義為迭代型別。

字串可以產生它的字元的迭代,字典可以生成它的鍵的迭代,檔案可以產生它的行的迭代。

迭代器是乙個物件,通過一些列的值來管理迭代。如果變數i定義為乙個迭代器物件,接下來每次呼叫內建函式next(i),都會從當前序列中產生乙個後續的元素。

物件obj是可迭代的,那麼通過語法iter(obj)可以產生乙個迭代器。

通過上述的定義,list的例項是可迭代的,但它本身不是乙個迭代器。

python還支援產生隱式迭代序列值函式和類,即無需立刻構建資料結構來儲存它所有的值。呼叫range(1000000)不是返回乙個數字列表,而是返回乙個可迭代的range物件。這個物件只有在需要的時候一次性產生百萬個值。這樣懶惰計算法有很大的優勢:無需留出記憶體來儲存一百萬個值。,同樣,迴圈被打斷,也不用花時間來計算range中未使用的值。

生成器

在python中建立迭代器最方便的技術是使用生成器。生成器的語法實現類似於函式,但不返回值。為了顯示序列中的每乙個元素,會使用yield語句。

具體見另一篇文章:

Python迭代器和生成器

先說迭代器,對於string list dict tuple等這類容器物件,使用for迴圈遍歷是很方便的。在後台for語句對容器物件呼叫iter 函式,iter 是python的內建函式。iter 會返回乙個定義了next 方法的迭代器物件,它在容器中逐個訪問容器內元素,next 也是python的...

Python迭代器和生成器

迭代器是訪問集合元素的一種方法 是可以記住遍歷的位置的物件。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問 他有兩個基本的方法,iter 和next 字串,列表或遠足物件都可以用於建立迭代器 list1 1,2,3,4 it1 iter list1 建立迭代器物件 print next ...

python 迭代器和生成器

迭代器是訪問集合元素的一種方式。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退,不過這也沒什麼,因為人們很少在迭代途中往後退。另外,迭代器的一大優點是不要求事先準備好整個迭代過程中所有的元素。迭代器僅僅在迭代到某個元素時才計算該元素,而在這之前或之後,元素可...