可迭代物件:可以直接作用於for迴圈的物件統稱為可迭代物件(iterable)。可以用isinstance()去判斷乙個物件是否是iterable物件
可以直接作用於for迴圈的資料型別一般分兩種
1、集合資料型別,如list、tuple、dict、set、string
2、是generator,包括生成器和帶yield的generator function
from collections import iterable
print(isinstance(, iterable)) #輸出:true
print(isinstance((), iterable)) #輸出:true
print(isinstance({}, iterable)) #輸出:true
print(isinstance("", iterable)) #輸出:true
print(isinstance((x for x in range(10)), iterable)) #輸出:true
print(isinstance(1, iterable)) #輸出:false
迭代器:不但可以作用於for迴圈,還可以被next()函式不斷呼叫並返回下乙個值,直到最後跑出乙個stopiteration錯誤表示無法繼續返回下乙個值
可以被next()函式呼叫並不斷返回下乙個值的物件稱為迭代器(iterator物件),可以使用isinstance()函式判斷乙個物件是否是iterator物件
from collections import iterator #輸出:false
print(isinstance(, iterator)) #輸出:false
print(isinstance((), iterator)) #輸出:false
print(isinstance({}, iterator)) #輸出:false
print(isinstance("", iterator)) #輸出:false
print(isinstance((x for x in range(10)), iterator)) #輸出:true
l = (x for x in [23,4,5,64,3435])
print(next(l))
print(next(l))
print(next(l))
print(next(l))
print(next(l))
#輸出:234
5643435
print(next(l)) #報錯:stopiteration
將元組、數列、字典、集合轉成iterator物件
a = iter([1,2,3,4,5])
print(next(a)) #輸出:1
print(next(a)) #輸出:2
print(isinstance(iter(), iterator)) #輸出:true
print(isinstance(iter(()), iterator)) #輸出:true
print(isinstance(iter({}), iterator)) #輸出:true
print(isinstance(iter(''), iterator)) #輸出:true
示例:
#輸入字串,列印該字串並直到輸入的字串為end時,程式結束
endstr = "end"
str = ""
for line in iter(input, endstr): #轉化成迭代器,當input為非end的字串時,不停迭代。
str += line + "\n" #換行列印
print(str)
Python學習筆記 迭代器
from collections import iterable from collections import iterator 可迭代物件 可以直接作用於for迴圈的物件統稱為可迭代物件 iterable 可以用isinstance 去判斷乙個物件是否是iterable物件 可以直接作用於for...
Python學習筆記 迭代器和迭代器協議
術語概念解釋 關於 for 迴圈 寫乙個迭代器 1 迭代器協議 迭代器協議是一種約定,即物件必須提供乙個 next 方法,執行該方法要麼返回迭代中的下一項,要麼丟擲乙個 stopiteration 異常,終止迭代。2 迭代器 iterator 迭代器是一種物件,一種可以被 next 函式呼叫並不斷返...
python學習筆記十四 迭代器
迭代是python最強大的功能之一,是訪問集合元素的一種方式。迭代器是乙個可以記住遍歷的位置的物件。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。迭代器有兩個基本的方法 iter 和next 字串,列表或元組物件都可用於建立迭代器 list 1,2,3,4...