1、概覽
我們已經學習了
list、tuple、dict、set、str
、generator、generator function
這些可以用
for
迴圈的就是可迭代(
iterable
)物件。
但其中只有generator和g
enerator function,可以被
next()
函式呼叫。
而能被next函式呼叫的 iterable物件,我們稱為迭代器(
iterator)
1.1、
iterable
到iterator
的轉化 雖然iterable 不一定是 iterator。但我們可以用 iter() 函式進行轉化
list
、dict
、str
等iterable
可以使用
iter()
函式變成
iterator
: # for 迴圈遍歷 list
for x in [1, 2, 3, 4, 5]:
pass
# 轉化為 generator 遍歷
it=iter([1,2,3,4,5])
# 定義
generator
物件it
while true:
try:
x=next(it)
except stopiteration:
break
1.2、為什麼
iterable
不一定是
iterator
為什麼list、dict、str等資料型別不是iterator
呢? 因為python的iterator物件表示的是乙個
資料流,iterator物件可以被next()函式呼叫並不斷返回下乙個資料,直到沒有資料時丟擲stopiteration錯誤。這個資料流可以看做是乙個有序序列,但我們卻不能提前知道序列的長度,只能不斷通過next()函式實現按需計算下乙個資料,所以iterator的計算是惰性的,只有在需要返回下乙個資料時它才會計算。
iterator甚至可以表示乙個無限大的資料流,例如全體自然數。而使用list是永遠不可能儲存全體自然數的。
1.3、小結
凡是可作用於
for迴圈的物件都是
iterable
型別;凡是可作用於
next()
函式的物件都是
iterator
型別,它們表示乙個惰性計算的序列;
集合資料型別如
list
、dict
、str
等是iterable
但不是iterator
,不過可以通過
iter()
函式獲得乙個
iterator
物件。python
的for
迴圈本質上就是通過不斷呼叫
next()
函式實現的
Python學習筆記 3 2章 迭代
這是學習廖雪峰老師python教程的學習筆記 1 概覽 如果給定乙個list或tuple,我們可以通過for迴圈來遍歷這個list或tuple,這種遍歷我們稱為迭代 iteration 當然,不止 list 和 tuple 可以迭代。只要是可迭代物件,無論有無下標,都可以迭代都。包括dict str...
python 3 5 學習筆記
字串方法 msg this is message msg.title 首字母大寫 msg.lower 字串全部小寫 msg.upper 字串全部大寫 msg.rstrip 刪除字串前後的空格 msg.lstrip 刪除字串前面的空格 msg.strip 刪除字串後面的空格 str msg 將msg轉...
python3 5學習if(學習筆記2)
coding utf 8 height input 請輸入你的身高 單位 m height float height weight input 請輸入你的體重 單位 kg weight float weight data weight 2 height print data if data 18.5...