迭代器:迭代器是訪問集合元素的一種方式。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。
迭代器提供了統一的訪問集合的介面,只要定義__iter__()方法物件,就可以使用迭代器訪問。
迭代器有兩個基本的方法
__iter__方法:返回迭代器物件本身
按我自己比較土的理解方法就是,每呼叫一次iter()方法,就會呼叫一次next方法。
比如斐波那契
classfibs:
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(生成器)
deffabs(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錯誤。可以把這個資料流看做是乙個有序序列,但我們卻不能提前知道序列的長度,只能不斷...