python初識生成器 迭代器

2022-05-17 09:52:23 字數 1420 閱讀 8190

生成器

帶有 yield 的函式在 python 中被稱之為 generator(生成器)

def xragns():     #

定義函式生成器

print('小伙'

)

yield ('

好') #

加上yield就會生成乙個生成器

print('

python')

yield('

hao'

)

print('程式設計'

)

yield('

hao'

)x = xragns() #

執行函式生代器僅僅是獲得內部不會執行

ret = x.__next__() #

生成器的next方法才會向下執行 執行函式尋找下乙個yield

print

(ret)

ret = x.__next__() #

第二次執行會回到上次跳出的位置想下執行

print

(ret)

ret = x.__next__

()print(ret)

迭代器

迭代器是訪問集合元素的一種方式。迭代器物件從集合的第乙個元素開始訪問,知道所有的元素被訪問完結束。迭代器只能往前不能後退

ef xrange(n):    #

定義乙個函式

start =0

while true: #

while迴圈

if start > n: #

判斷如果值小於n

return

yield start #

生成器退出

start += 1 #

每迴圈到這都加一

for i in xrange(10): #

迭代器print

(i)obj = xrange(5) #

執行函式,這個時候內部不會執行生成器

n1 = obj.__next__() #

生成器從上向下執行知道遇到的第乙個yield

n2 = obj.__next__() #

生成器會回到上次跳出的位置繼續回去迴圈

n3 = obj.__next__() #

依次想下執行

n4 = obj.__next__

()n5 = obj.__next__

()n6 = obj.__next__

()n7 = obj.__next__

()print(n1,n2,n3,n4,n5,n6) #

輸出所有的結果

#

初識python迭代和生成器

接觸python迭代器,生成器後,查閱資料整理了一些知識點,寫了一些自己的感悟,如有錯誤希望及時指正。list 1,2,3 for i in mylist print i result 12 3from collections import iterable print isinstance 1,2...

Python 迭代器 生成器

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

python 迭代器,生成器

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