python3 迭代器 python3 迭代器

2021-10-11 12:57:42 字數 1490 閱讀 2530

# auther: aaron fan

# 可以直接作用於for迴圈的物件統稱為可迭代物件:iterable

# 可以使用isinstance()判斷乙個物件是否是iterable物件:

from collections import iterable

isinstance(,iterable)

true

isinstance({},iterable)

true

isinstance('abc',iterable)

true

isinstance(( x for x in range(10) ),iterable)

true

isinstance(100,iterable)

false

# 而生成器不但可以被用作於for迴圈,還可以被next()函式不斷呼叫並返回下乙個值,

# 直到最後跑出stopiteration錯誤表示無法繼續返回下乙個值了。

# 可以使用isinstance()判斷乙個物件是否是iterator物件:

from collections import iterator

isinstance(,iterator)

false

isinstance({},iterator)

false

isinstance('abc',iterator)

false

isinstance(( x for x in range(10) ),iterator)

true

isinstance(100,iterator)

false

生成器都是iterator物件,但是list、dict、str雖然是iterable,卻不是iterator

把list、dict、str等iterable變成iterator可以使用iter()函式:

from collections import iterator

a = [1,2,3]

print(isinstance(a,iterator))

a = iter(a)

print(isinstance(a,iterator))

print(a)

for i in a:

print(i)

# python的for迴圈本質上就是通過不斷呼叫next()函式實現的,例如:

for x in [1,2,3,4,5]:

print(x)

print("----------------------")

# 實際上完全等價於:

#首先獲得iterator物件:

it = iter([1,2,3,4,5])

#迴圈while true:

try:

x = it.__next__()

print(x)

except stopiteration:

#遇到stopiteration就退出迴圈

break

python3菜鳥 Python3 迭代器與生成器

如教程所說,迭代器和生成器算是 python 一大特色,其核心是基於迭代器協議來的。而平時我們經常使用的 for in 迴圈體,本質就是迭代器協議的一大應用。同時 python 內建的集合型別 字元 列表 元組 字典 都已經實現了迭代器協議,所以才能使用 for in 語句進行迭代遍歷。for in...

Python3 可迭代 和 迭代器

可迭代iterable 可用for迴圈的資料型別 1.集合資料型別,如list,tuple,dict,set,str等 2.generator,包括生成器和帶yield的generator function 生成器不但可以作用於for迴圈,還可以被next 函式不斷呼叫並返回下乙個值,直到最後丟擲s...

Python3迭代器及其使用

生成器都是迭代器,迭代器不一定是生成器 字串 列表 元組 字典 集合都可以被for迴圈,說明他們都是可迭代的 l 1,2,3,4,5 l.iter 盡量不用 底層內建函式 d iter l print d 什麼是迭代器 滿足兩個條件 1 有iter方法 2 有next方法 print next d ...