迭代器與生成器

2021-10-12 19:41:05 字數 1516 閱讀 7455

迭代器

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

迭代器是乙個可以記住遍歷的位置的物件。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。迭代器有兩個基本的方法:iter() 和 next()。

list=[

1,2,

6,3]

it=iter

(list

)#建立迭代器物件

print

(next

(it)

)#結果1

print

(next

(it)

)#結果2

print

(next

(it)

)#結果6

#根據上面的,就可以推斷列印一次就可以輸出迭代器的下乙個元素

for i in it:

#利用for迴圈依次迭代輸出

print

(i)#也可以使用next()函式

import sys #引入sys模組

li=[1,

2,365,9]

ip=iter

(li)

#建立迭代器物件

while

true

:try

:print

(next

(ip)

)except stopiteration:

sys.exit(

)#結果1,2,365,9

生成器

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

#使用yield實現斐波那契數列

import sys

deffibonacci

(n):

#生成函式 斐波那契

a,b,counter=0,

1,0print

('a'

,a)while

true:if

(counter>n)

:return

yield a

a,b=b,a+b

counter+=

1f=fibonacci(10)

#f是乙個迭代器由生成器生成

while

true

:try

:print

(next

(f),end=

' ')

except stopiteration:

sys.exit(

)#結果是0,1,1,2,3,5,8,13,21,34,55

迭代器與生成器

可迭代物件 可以直接作用於for迴圈的物件 統稱為可迭代物件 返回迭代器的物件 即iterable。一是集合資料型別,如list tuple dict set str等 二是generator,包括生成器和帶yield的generator function。容器 簡單來說 容器是一系列元素的集合 容...

生成器與迭代器

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

生成器與迭代器

通過列表推導式,可以直接建立乙個列表,但是收到記憶體限制,列表容量肯定是有限的而且,建立乙個包含100萬個元素的列表,占用很大的儲存空間。如果我們僅僅需要訪問前面幾個元素,後面 後面元素的占用儲存空間就被浪費 所以,如果列表元素可以按照某種演算法算出來,那我們就可以再迴圈當中不斷地推導它,生成元素,...