迭代器和生成器個人筆記 Python

2021-10-13 19:09:34 字數 1710 閱讀 6011

class

demo

(object):

def__init__

(self,x)

: self.x = x

self.count =

0 例項化的計數man

def__iter__

(self)

:return self 返回例項化的可迭代物件

#for in 每一次都會呼叫__next__方法 獲取返回值

def__next__

(self)

: self.count+=

1if self.count<=self.x:

print

("我是count"

, self.count)

return self.count-

1else

:print

("我是count"

,self.count)

raise stopiteration#終止迭代器

d1 = demo(8)

# 只要重寫了 __iter__方法他就是可迭代物件 可以使用for in

test = d1.__iter__(

)# 這樣就獲取到物件的迭代器

迭代器生成斐波那契數列

class

fact

(object):

def__init__

(self,num:

int)

: self.num = num

self.num1 =

0 self.num2 =

1 self.count =

0def

__iter__

(self)

:return self

def__next__

(self)

: self.count +=

1if self.count <= self.num:

#x 存放最後的結果

x = self.num2

self.num1,self.num2 =self.num2,self.num1+self.num2

return x

else

:raise stopiteration

f = fact(10)

#佔時間 不佔空間

z =0

for i in f:

z = i

print

(z)print

(next

(iter

(z)) 等價於 print

((f.__iter__())

.__next__(

)) 這樣一次只能拿乙個值要拿多少個要寫多少次 占用空間不占用時間

yield i #將函式變成了生成器 本來我們的函式是用return 表示函式結束 但是現在通過yield

i +=

1

生成器和迭代器

可以直接作用於for迴圈的物件稱為可迭代物件 iterable.可以用isinstance 判斷乙個物件是否是iterable物件。isinstance iterable true isinstance iterable true isinstance 235,iterable false 而生成器...

迭代器和生成器

1 迭代器的概念 print dir 告訴我列表的所有用法 有雙下劃線的所有方法叫做雙下方法,是c語言已經寫好的方法。你可以用不止一種方法呼叫它。列表的用法變集合 set dir 求交集 set dir set dir set dir 求列表,字典,字串它們的用法的交集 他們共同的用法 iterab...

生成器和迭代器

1.iterator 迭代器 舉例 我們對list使用for for i in 1,2,3,4 print i 12 34對string物件使用for for ch in python print ch py thon對字典物件使用for for k in print k yx對檔案使用for fo...