python的迭代器和生成器(簡單的)

2021-08-25 05:32:56 字數 2341 閱讀 6760

1迭代器:

# 什麼是迭代器:乙個實現了iter方法和next方法的物件就叫迭代器

from collections import iterable

#判斷物件型別使用 isinstance() 函式

#such:

print(isinstance([3,4],iterable)) #表示出列表可迭代

print(isinstance(3,iterable)) #int不可迭代

class

mylist

(object):

'''重寫list'''

def__init__

(self):

#初始化定義屬性

self.iter =

defadd(self,par):

#定義列表新增數值的新方法

def__iter__

(self):

'''魔法方法:表示物件可迭代'''

myiter = myiter(self.iter) #引入列表的迭代器

return myiter

class

myiter

(object):

'''實現迭代器'''

def__init__

(self,mylist):

#初始化,定義屬性

self.mylist = mylist

self.current_index = 0

def__iter__

(self):

#魔法方法:表示物件可迭代,返回值是他自己

return self

def__next__

(self):

#定義next後的狀態變化,也是迭代器最重要的一步

if self.current_index < len(self.mylist): #self.current_index從0開始,當他小於列表長度時

self.current_index +=1

#self.current_index加1

return self.mylist[self.current_index-1] #返回self.current_index加1前的狀態(這裡就是加1前的值)

else: #當self.current_index大於列表長度

raise stopiteration # raise:主動丟擲錯誤 再停止迭代 (next方法裡一定不能忘記的,不然會出錯使迭代不能停止)

defmain

(): mylist = mylist() #建立乙個物件

for i in range(10):

print('寫入的數為:',i)

mylist.add(i) #呼叫新方法將元素加到列表裡

for j in mylist:

print('取出的值為:',j)

if __name__ == '__main__':

main()

2生成器:

# 生成器是一種特殊的迭代器

# 迭代器需要手動記錄迭代位置

# 生成器使用yield

# 只要存在yield就是生成器

deffeibonaqi

(num):

'''實現了乙個斐波那契數列的生成器'''

a = 0

b = 1

current_index = 0

print('1'*30)

while current_index < num:

a,b = b,(a+b) #斐波那契實現的計算方法

current_index += 1

yield (a,b) #最重要是yield

# yield 特點:

# 1程式遇到 "只要" 遇到yield會暫停,如果yield後面有值,返回結果之後再暫停!!!!!

# 2再次啟動生成器,**從yield之後開始執行

print('2'*30)

defmain

(): result = feibonaqi(5)

print(result)

# next表示進入下一步狀態,直至遇見下乙個yield被暫停

print(next(result))

print(next(result))

print(next(result))

print(next(result))

if __name__ == '__main__':

main()

Python迭代器和生成器

先說迭代器,對於string list dict tuple等這類容器物件,使用for迴圈遍歷是很方便的。在後台for語句對容器物件呼叫iter 函式,iter 是python的內建函式。iter 會返回乙個定義了next 方法的迭代器物件,它在容器中逐個訪問容器內元素,next 也是python的...

Python迭代器和生成器

迭代器是訪問集合元素的一種方法 是可以記住遍歷的位置的物件。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問 他有兩個基本的方法,iter 和next 字串,列表或遠足物件都可以用於建立迭代器 list1 1,2,3,4 it1 iter list1 建立迭代器物件 print next ...

python 迭代器和生成器

迭代器是訪問集合元素的一種方式。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退,不過這也沒什麼,因為人們很少在迭代途中往後退。另外,迭代器的一大優點是不要求事先準備好整個迭代過程中所有的元素。迭代器僅僅在迭代到某個元素時才計算該元素,而在這之前或之後,元素可...