"""
迭代器的定義:
1. 類中含有__init__() 和 __next__() 方法
2. __iter__() 返回對象本身,即self
3. __next__() 返回下一個迭代數(shù)據(jù),如果沒有數(shù)據(jù)了,則拋出StopIteration異常,終止迭代
"""
class IteratorDemo():
def __init__(self):
self.counter = 0
def __iter__(self):
return self
def __next__(self):
self.counter += 1
if self.counter >= 3:
raise StopIteration()
return self.counter
# 實例化迭代器
it = IteratorDemo()
# 可以被next()函數(shù)調(diào)用,并不斷返回下一個值的對象稱為迭代器
v1 = next(it)
"""
生成器函數(shù)的定義:
1. 函數(shù)內(nèi)使用yield關(guān)鍵字,即生成器函數(shù)
2. 生成器對象(內(nèi)部是根據(jù)生成器類generator創(chuàng)建的對象),生成器類內(nèi)部也聲明了:__iter__() 和 __next__() 方法
生成器實際上是一種特殊的迭代器
"""
def generatorFunc():
yield 1
print(123)
# 創(chuàng)建生成器對象
g = generatorFunc()
# print(next(g))
# print(next(g))
"""
可迭代對象的定義:
1. 類中含有__iter__() 方法,且返回一個迭代器對象|生成器對象
"""
class IterbleDemo():
def __iter__(self):
return IteratorDemo()
# 實例化可迭代對象
it = IterbleDemo()
# 可迭代對象是可以使用for來進(jìn)行循環(huán),在循環(huán)的內(nèi)部其實是先執(zhí)行__iter__()方法,獲取其迭代對象,然后在內(nèi)部執(zhí)行這個迭代器對象的next()功能,逐步取值
for i in it:
print(i)
迭代器|生成器|可迭代對象
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 迭代是一個動詞,凡是能用for in 這樣的語句進(jìn)行遍歷的對象都稱之為可迭代對象,而這一個過程也就稱之為迭代。 可...
- 凡是可作用于for循環(huán)的對象都是Iterable類型(可迭代對象); 凡是可作用于next()函數(shù)的對象都是Ite...
- 1. 概念理解 迭代是Python語言的強(qiáng)大功能之一,主要用來對集合元素進(jìn)行訪問。 可迭代對象(iterable)...
- 生成器:我實現(xiàn)了這樣一個功能你試試 列表: 這個簡單。 都準(zhǔn)備好了,點火 開炮 完成后我們來取一下90~100的元...