---恢復內容開始---
一,什麼是可迭代物件?迭代物件與迭代器的區別?
只含有__iter__方法的資料是可迭代物件 含有__iter__方法,並且含有__next__方法的資料是迭代器
擁有__iter__方法的物件叫可迭代物件 遵循可迭代協議.
1 判斷是否為可迭代物件 dir()顯示物件的所有方法
可迭代物件有:str list tuple dict set range
第一種方法結果:s = '
abc'
print('
__iter__'in
dir(s))
print('
__iter__
'in dir(333))
方法二 匯入乙個模組 from collections import iterable
l = [1,2,3]結果:l_iter = l.__iter__
()from collections import
iterable #判斷是否為迭代物件
from collections import
iterator #判斷是否為迭代器
(isinstance(l,iterable))
(isinstance(l,iterator))
(isinstance(l_iter,iterator))
print(isinstance(l,list))
二.迭代器 具有__iter__並且具有__next__方法的物件叫迭代器 遵循迭代器協議
迭代器的意義?
1,迭代器節省記憶體.
2,迭代器惰性機制.
3,迭代器不能反覆,一直向下執行.
1. 迭代物件轉化成迭代器
#結果:迭代器取值:
s2 = '
abcd
's3 = s2.__iter__
()print(s3.__next__
())print(s3.__next__
())print(s3.__next__
())print(s3.__next__())
for迴圈與迭代器的比較
#結果:for迴圈的機制.
#內部含有__iter__方法,他會將可迭代物件先轉化成迭代器.
#,然後在呼叫__next__方法.
#他有異常處理的方法.
for i in [1,2,3]:
(i)l = [1,2,3]
l_iter = l.__iter__
()while
true:
try:
print(l_iter.__next__
())
except
stopiteration:
break
三 什麼是生成器?生成器的本質就是迭代器,
1 生成器是自己用python**寫的迭代器.
1,可以用生成器函式
2,可以用各種推導式構建迭代器.
3,可以通過資料轉化.
#結果:生成器函式 生成器
defgener():
print('
aaa'
)
yield 222 #乙個yield列印一次
print('
bbb'
)
yield 333
print('
ccc'
)g =gener() #g為生成器的記憶體位址
(g)print(g.__next__())
2 return yield 區別return 返回給呼叫者值,並結束此函式.
yiled 返回給呼叫者值,並將指標停留著當前位置.
def結果:gener():
yield 222count = yield 333
print('
-------->
',count)
b=yield
'aaa
(b) a = yield
'aaa
(a)g =gener()
(g.send(none))
(g.send(none))
print(g.send('
aaaa'))
print(g.send('
wwwwww
'))
生成器 迭代器
最近見天一直在看廖大的python教程,卻發現很多基礎看著很簡單,但卻不會應用,歸根結底還是因為理解不到位,故而又將教程學了一遍,並將自己的理解記錄一下,也方便後面查閱。由於沒有相關程式設計基礎,有些理解可能是錯的,敬請批評指正。想深入具體學習廖大部落格請移步廖雪峰的官方 有時候用迴圈生成列表太過繁...
迭代器,生成器
迭代器 生成器 生成器的第1種實現方式 列表生成式改為生成器 python中yield關鍵字 函式中如果有yield,那麼呼叫這個函式的返回值為生成器。當生成器g呼叫next方法,執行函式,知道遇到yield就停止 再執行next,從上一次停止的地方繼續執行 函式中遇return直接退出,不繼續執行...
迭代器 生成器
迭代器 iter 可迭代物件 下乙個元素的值 next 可迭代物件 類中實現 iter 方法 提供迭代器 實現迭代器 import time class mylistiter object 迭代器類 def init self,data self.data data self.index 0 def...