迭代器
python最強大的功能之一,訪問集合元素的一種方式。迭代器是乙個可以記住遍歷的位置的物件,迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束,迭代器只能往前不會後退。
迭代器有兩個基本的方法:
字串,列表和元組物件都可用於建立迭代器
>>> list=[1,2,3,4]>>> it = iter(list) #
建立迭代器物件
>>> print (next(it)) #
輸出迭代器的下乙個元素
建立乙個迭代器
把乙個類作為乙個迭代器使用需要在類中實現兩個方法 __iter__() 與 __next__() 。__iter__() 方法返回乙個特殊的迭代器物件, 這個迭代器物件實現了 __next__() 方法並通過 stopiteration 異常標識迭代的完成。__next__() 方法會返回下乙個迭代器物件。
stopiteration 異常用於標識迭代的完成,防止出現無限迴圈的情況,在 __next__() 方法中我們可以設定在完成指定迴圈次數後觸發 stopiteration 異常來結束迭代。
1class
mynumbers:
2def
__iter__
(self):
3 self.a = 1
4return
self56
def__next__
(self):
7if self.a <= 20:
8 x =self.a
9 self.a += 1
10returnx11
else:12
raise
stopiteration
1314 myclass =mynumbers()
15 myiter =iter(myclass)
1617
for x in
myiter:
18print(x)
生成器
在 python 中,使用了 yield 的函式被稱為生成器(generator)。跟普通函式不同的是,生成器是乙個返回迭代器的函式,只能用於迭代操作,更簡單點理解生成器就是乙個迭代器。
在呼叫生成器執行的過程中,每次遇到 yield 時函式會暫停並儲存當前所有的執行資訊,返回 yield 的值, 並在下一次執行 next() 方法時從當前位置繼續執行。呼叫乙個生成器函式,返回的是乙個迭代器物件。
1import
sys2
3def fibonacci(n): #
生成器函式 - 斐波那契
4 a, b, counter = 0, 1, 0
5while
true:
6if (counter >n):
7return
8yield
a9 a, b = b, a +b
10 counter += 1
11 f = fibonacci(10) #
f 是乙個迭代器,由生成器返回生成
1213
while
true:
14try:15
print (next(f), end="")
16except
stopiteration:
17 sys.exit()
python菜鳥教程學習9 函式
函式的定義 函式是組織好的,可重複使用的,用來實現單一,或相關聯功能的 段。python提供了很多內建函式,但我們依然可以自己建立函式,叫做使用者自定義函式。自定義函式 你可以定義乙個由自己想要功能的函式,以下是簡單的規則 任何傳入引數和自變數必須放在圓括號中間,圓括號之間可以用於定義引數。函式的第...
python菜鳥日記8
1.python中的多程序程式設計概念 由於python是跨平台的,自然也應該提供乙個跨平台的多程序支援。multiprocessing模組就是跨平台版本的多程序模組。multiprocessing模組提供了乙個process類來代表乙個程序物件。2.python中的多執行緒程式設計具體做法 當我們...
Python 函式 菜鳥教程
python3函式 菜鳥程式設計 計算面積函式 學習他的呼叫函式方式!def area width,height return width height w 4 h 5 print width w,height h,area area w,h width 4 height 5 area 20 pyt...