Python學習筆記 迭代器和生成器

2022-07-28 05:18:13 字數 1151 閱讀 5085

0. 閱讀目錄

1. 迭代器 (iterator)

特點:訪問方式(函式,單向):從第乙個元素開始,直到所有元素被訪問完後結束。

統一的訪問集合的介面:物件實現__iter__(),則可以使用迭代器訪問。常用內建資料結構list\dict\tuple\string\set均支援迭代器。

與for迴圈的索引訪問區別:iterator是唯一訪問無法隨機訪問的資料結構(比如set)的方式。

多執行緒:對可變集合使用iterator非thread-safe。(可用非可變集合如tuple避免?)

延遲計算or惰性求值(lazy evaluation):迭代器只在迭代至某個元素時才計算該元素。可遍歷無限集合。

有關**:

it = iter(the_list)   #獲得迭代器物件 

it.next() or next(it)  #訪問下乙個元素

enumerate(it)   #獲得enumerate object,內含索引元組。

try

:

while

true:

print

it.next()

except

stopiteration:

pass

2. 生成器 (generator)

特點:

與列表解析(list comprehension) 極為相似,表示式為:(func(x) for x in the_lst if expression(x))

可替代大多數map和filter。

有關**:(import itertools as it_tool)

it_tool.count(s[, step])   #從s開始迭代,以後每個元素加上step(default: 1)

it_tool.cycle(some_struct)   #迴圈迭代某個資料結構內的元素

it_tool.repeat(elem[, n])   #將elem重複n(default: inf)次

3. reference

python函式式程式設計指南(三):迭代器

Python學習筆記 迭代器和迭代器協議

術語概念解釋 關於 for 迴圈 寫乙個迭代器 1 迭代器協議 迭代器協議是一種約定,即物件必須提供乙個 next 方法,執行該方法要麼返回迭代中的下一項,要麼丟擲乙個 stopiteration 異常,終止迭代。2 迭代器 iterator 迭代器是一種物件,一種可以被 next 函式呼叫並不斷返...

Python學習筆記 迭代器

from collections import iterable from collections import iterator 可迭代物件 可以直接作用於for迴圈的物件統稱為可迭代物件 iterable 可以用isinstance 去判斷乙個物件是否是iterable物件 可以直接作用於for...

python學習筆記10(迭代器)

可迭代物件 可以直接作用於for迴圈的物件統稱為可迭代物件 iterable 可以用isinstance 去判斷乙個物件是否是iterable物件 可以直接作用於for迴圈的資料型別一般分兩種 1 集合資料型別,如list tuple dict set string 2 是generator,包括生...