python程式設計 2 迭代器,生成器

2021-07-16 09:33:29 字數 1566 閱讀 5273

1迭代器(iterator)

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

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

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

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

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

#demo1

list = [1,2,3,4]

it = iter(list) #建立迭代器物件

print(next(it)) #輸出迭代器的下乙個元素

print(next(it)) #輸出迭代器的下乙個元素

print(next(it)) #輸出迭代器的下乙個元素

print(next(it)) #輸出迭代器的下乙個元素

#demo2

list=[1,2,3,4]

it = iter(list) #建立迭代器物件

for x in it:

print(x,end="")

#demo3

import sys #引入sys模組

list=[1,2,3,4]

it = iter(list) #建立迭代器

while true:

try:

print(next(it)) #s輸出迭代器的下乙個元素

except stopiteration:

sys.exit()

2生成器(generator)

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

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

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

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

import sys

def fibonacci(n):#生成器函式---斐波那契

a,b,counter=0,1,0

while true:

if (counter > n):

return

yield a

a,b = b,a + b

counter+=1

f = fibonacci(10) # f 是乙個迭代器,由生成器返回生成

while true:

try:

pass

print(next(f),end=" ") #輸出迭代器的下乙個元素

except stopiteration:

sys.exit()

結論1生成器(generator)都是iterator物件,但list,dict,str雖然都是iterable,卻不是iterator

2把list,dict,str等iterable變成iterator可以使用iter()函式

參考鏈結

官方鏈結

python 迭代器,生成器 2

生成器一定是迭代器,但是迭代器不一定是生成器 isinstance 判斷乙個物件是否是 iterator 物件 in 56 from collections import iterator in 57 isinstance x for x in range 10 iterator out 57 tr...

Python 迭代器 生成器

可以直接作用於for迴圈的物件,統稱為可迭代物件 iterable。iterator物件表示的是乙個資料流,iterator物件可以被next 函式呼叫並不斷返回下乙個資料,直到沒有資料時丟擲stopiteration錯誤。可以把這個資料流看做是乙個有序序列,但我們卻不能提前知道序列的長度,只能不斷...

python 迭代器,生成器

什麼事迭代 可直接用作與for迴圈的物件統稱為可迭代物件 可以被next 函式呼叫,並不斷返回下乙個值的物件稱為迭代器,所有的iterable均可以通過內建函式iter 來轉變為iterator。對於迭代器來講,有乙個next 就夠了。在你使用for和in語句時,程式就會自動呼叫即將被處理的物件的可...