一、迭代器相關
迭代器(iterator)有時又稱游標(cursor)是程序設計的軟件設計模式,可在容器(container,例如鏈表或陣列)上遍訪的接口,設計人員無需關心容器的內容。
關鍵點:遍訪(遍歷?)容器 寫到這里 給大家推薦一個資源很全的python學習免非解答.裙 :七衣衣九七七巴而五(數字的諧音)轉換下可以找到了,這里有資深程序員分享以前學習心得,學習筆記,還有一線企業的工作經驗,且給大家精心整理一份python零基礎到項目實戰的資料,每天給大家講解python最新的技術,前景,學習需要留言的小細節
二、迭代器特點
1.迭代器可以從集合的第一個數據開始訪問數據,直到最后一個
2.迭代器只可向前訪問,不能倒退(next()方法)
3.迭代器的兩個基本方法:next()、iter()
三、Python中的迭代器
迭代器的兩個基本方法:next()、iter()
1.獲取String類型的迭代器,while遍歷
a, i = "Baldwin", 0
it = iter(a)
while i < len(a):
print(next(it), end=" ")
i += 1
E:\WorkSpaces\PycharmProjects\PyDemo\venv\Scripts\python.exe E:/WorkSpaces/PycharmProjects/PyDemo/cn/yzstu/__init__.py
B a l d w i n
Process finished with exit code 0
2.for遍歷
a = "Baldwin"
it = iter(a)
for a in it:
print(a,end=" ")
E:\WorkSpaces\PycharmProjects\PyDemo\venv\Scripts\python.exe E:/WorkSpaces/PycharmProjects/PyDemo/cn/yzstu/__init__.py
B a l d w i n
Process finished with exit code 0
四、創建迭代器
本段默認讀者有面向對象的理解基礎
如果我們想把一個類當做迭代器來使用,我們最基礎的要實現__iter__() 與 __next__() 兩個方法。
__iter__():返回一個迭代器對象,並在這個迭代器對象中實現了__next__()方法
__next__():在Python2中,這個方法名為next(),這個方法會返回下一個迭代器class NumbersForIt:
def __iter__(self): # 創建 __iter__
self.a = 1
return self
def __next__(self): # 創建 __next__
b = self.a
self.a += 1
return b
numbwes = NumbersForIt()
it = iter(numbwes)
print(next(it))
print(next(it))
print(next(it))
print(next(it))
print(next(it))
print(next(it))
E:\WorkSpaces\PycharmProjects\PyDemo\venv\Scripts\python.exe E:/WorkSpaces/PycharmProjects/PyDemo/cn/yzstu/__init__.py
Process finished with exit code 0
五、生成器創建迭代器
在 Python 中,使用了 yield 的函數被稱為生成器(generator)。
跟普通函數不同的是,生成器是一個返回迭代器的函數,只能用於迭代操作,更簡單點理解生成器就是一個迭代器。
在調用生成器運行的過程中,每次遇到 yield 時函數會暫停並保存當前所有的運行信息,返回 yield 的值, 並在下一次執行 next() 方法時從當前位置繼續運行。
調用一個生成器函數,返回的是一個迭代器對象。
def generator():
a = 1
while True:
yield a
a += 1
it, b = generator(), 0
while b < 10:
print(next(it), end=" ")
b += 1
E:\WorkSpaces\PycharmProjects\PyDemo\venv\Scripts\python.exe E:/WorkSpaces/PycharmProjects/PyDemo/cn/yzstu/__init__.py
1 2 3 4 5 6 7 8 9 10
Process finished with exit code 0
使用generator實現斐波那契數列
def generator():
a, b = 1, 1
while True:
yield a
a, b = b, a + b
it, m = generator(), 0
while m < 10:
print(next(it), end=" ") # 此時我們獲取到的是上面a的值
m += 1
E:\WorkSpaces\PycharmProjects\PyDemo\venv\Scripts\python.exe E:/WorkSpaces/PycharmProjects/PyDemo/cn/yzstu/__init__.py
1 1 2 3 5 8 13 21 34 55
Process finished with exit code 0
六、總結
1.無論在哪一種語言中,迭代器的正確使用都很重要
2.yield的使用能夠快速創建一個迭代器,需要注意的是,要在while中添加正確的迭代規則
最后,給大家推薦一個資源很全的python學習免非解答.裙 :七衣衣九七七巴而五(數字的諧音)轉換下可以找到了,這里有資深程序員分享以前學習心得,學習筆記,還有一線企業的工作經驗,且給大家精心整理一份python零基礎到項目實戰的資料,每天給大家講解python最新的技術,前景,學習需要留言的小細節
本文的文字及圖片來源於網絡加上自己的想法,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯系我們以作處理。