python之迭代器 生成器

2022-05-10 09:59:08 字數 907 閱讀 1798

迭代器:迭代器是訪問集合元素的一種方式。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。

迭代器提供了統一的訪問集合的介面,只要定義__iter__()方法物件,就可以使用迭代器訪問。

迭代器有兩個基本的方法

__iter__方法:返回迭代器物件本身

按我自己比較土的理解方法就是,每呼叫一次iter()方法,就會呼叫一次next方法。

比如斐波那契

class

fibs:

def__init__

(self):

self.a=0

self.b=1

defnext(self):

self.a,self.b=self.b,self.a+self.b

return

self.a

def__iter__

(self):

return self

fib=fibs()

for key in fib:

if key>10:

print key

break

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

def

fabs(max):

a,b,n=0,1,0

while nyield

b a,b=b,a+b

n=n+1

print list(fabs(10))

結果:[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

每一次迴圈yield產生乙個值

迭代器與生成器:迭代器是物件;生成器是方法,或者說是沒有return的函式(return用yield替代);二者的共同之處均了降低記憶體的開銷。

Python之生成器 迭代器

利用 建立generator a x x for x in range 10 列表生成式 a 0,1,4,9,16,25,36,49,64,81 b x x for x in range 10 用 建立乙個generator b at 0x7f62455db258 next b 利用 next 呼叫...

Python之生成器 迭代器

生成器類似返回值為陣列的乙個函式,這個函式可以接受引數,可被呼叫,但只能產生乙個值,所以大大節省記憶體。生成器表示式的語法非常簡單,只需要將列表推導式的中括號改成小括號就可以了 1 x x for x in range 10 if x 2 0 會列印出整個列表 0,4,8,12,16 1 x x f...

Python 迭代器 生成器

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