python學習筆記10(迭代器)

2021-09-06 15:21:57 字數 2008 閱讀 1261

可迭代物件:可以直接作用於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...