python菜鳥教程學習8 迭代器與生成器

2022-07-09 01:06:11 字數 1802 閱讀 5169

迭代器

python最強大的功能之一,訪問集合元素的一種方式。迭代器是乙個可以記住遍歷的位置的物件,迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束,迭代器只能往前不會後退。

迭代器有兩個基本的方法:

字串,列表和元組物件都可用於建立迭代器

>>> list=[1,2,3,4]

>>> it = iter(list) #

建立迭代器物件

>>> print (next(it)) #

輸出迭代器的下乙個元素

建立乙個迭代器

把乙個類作為乙個迭代器使用需要在類中實現兩個方法 __iter__() 與 __next__() 。__iter__() 方法返回乙個特殊的迭代器物件, 這個迭代器物件實現了 __next__() 方法並通過 stopiteration 異常標識迭代的完成。__next__() 方法會返回下乙個迭代器物件。

stopiteration 異常用於標識迭代的完成,防止出現無限迴圈的情況,在 __next__() 方法中我們可以設定在完成指定迴圈次數後觸發 stopiteration 異常來結束迭代。

1

class

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() 方法時從當前位置繼續執行。呼叫乙個生成器函式,返回的是乙個迭代器物件。

1

import

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