# 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 ...