Python3 迭代器與生成器

2021-07-11 05:27:17 字數 1858 閱讀 1510

迭代是python最強大的功能之一,是訪問集合元素的一種方式。。

迭代器是乙個可以記住遍歷的位置的物件。

迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。

迭代器有兩個基本的方法:iter() 和 next()。

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

>>>

list=[1

,2,3

,4]>>>

it =

iter

(list

)# 建立迭代器物件

>>>

print

(next(it

))# 輸出迭代器的下乙個元素

1>>>

print

(next(it

))2>>>

迭代器物件可以使用常規for語句進行遍歷:

#!/usr/bin/python3

list=[1

,2,3

,4]it

=iter

(list

)# 建立迭代器物件

forx

init

:print(x

,end

=" "

)

執行以上程式,輸出結果如下:

123

4

也可以使用 next() 函式:

#!/usr/bin/python3

import

sys

# 引入 sys 模組

list=[1

,2,3

,4]it

=iter

(list

)# 建立迭代器物件

while

true

:try

:print

(next(it

))except

stopiteration

:sys

.exit

()

執行以上程式,輸出結果如下:

123

4

在 python 中,使用了 yield 的函式被稱為生成器(generator)。

跟普通函式不同的是,生成器是乙個返回迭代器的函式,只能用於迭代操作,更簡單點理解生成器就是乙個迭代器。

在呼叫生成器執行的過程中,每次遇到 yield 時函式會暫停並儲存當前所有的執行資訊,返回yield的值。並在下一次執行 next()方法時從當前位置繼續執行。

以下例項使用 yield 實現斐波那契數列:

#!/usr/bin/python3

import

sysdef

fibonacci(n

):# 生成器函式 - 斐波那契a,

b,counter =0

,1,0

while

true:if

(counter

>n):

return

yield

a a,b

=b,a

+bcounter +=1

f =fibonacci(10

)# f 是乙個迭代器,由生成器返回生成

while

true

:try

:print

(next(f

),end

=" "

)except

stopiteration

:sys

.exit

()

執行以上程式,輸出結果如下:

011

2358

1321

3455

python3 迭代器與生成器

生成器yield 在python中,使用了yield的函式被稱為生成器 generator 跟普通函式不同的是,生成器是乙個返回迭代器的函式,只能用於迭代操作,更簡單點理解生成器就是乙個迭代器。在呼叫生成器的執行過程中,每次遇到yield時函式會暫停並儲存當前所有執行資訊,返回yield的值。並在下...

Python3 迭代器與生成器

迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。使用iter 定義迭代器,使用next 訪問迭代器的下乙個元素。當迭代器中沒有下乙個元素時,繼續使用next 則會丟擲stopiteration異常。author timax liu import sys 宣告迭代器兩種方式 iter...

Python3 迭代器與生成器

迭代是python最強大的功能之一,是訪問集合元素的一種方式。迭代器是乙個可以記住遍歷的位置的物件。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。迭代器有兩個基本的方法 iter 和 next 字串,列表或元組物件都可用於建立迭代器 例項 python 3...