從0基礎學習Python(29) 迭代器

2021-10-24 01:15:36 字數 1796 閱讀 4498

迭代是訪問集合元素的一種方式,迭代器是乙個可以記住遍歷的位置的物件。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。

迭代器只能往前不能往後

基本上我們知道的可遍歷物件:list、tuple、str等型別資料都可以使用for …in…的迴圈進行遍歷(從裡面依次往出獲取資料)資料,這種過程除了叫做遍歷之外,還叫做迭代

檢測可迭代物件

#先導入迭代物件模組

from collections import iterable

#函式判斷list是否是iterable

isinstance

(list

,iterable)

如果想要乙個物件成為乙個可迭代物件,這個物件可以直接使用for迴圈進行遍歷,那麼這個物件中必須要實現乙個方法:_iter_

判斷乙個物件是否是迭代器

#先導入迭代物件模組

from collections import iterator

#函式判斷list是否是iterable

isinstance

(list

,iterator)

如果想要建立乙個迭代器,則必須要繼續實現乙個方法:_next_

經過測試__iter__方法是迭代物件的核心方法,每次迭代的核心控制者是乙個迭代器

而迭代器中的__next__方法的核心作用就是返回每次迭代的最終資料,迭代器每次進行迭代工作的最終結果

在next方法中stopiteration異常物件主要就是迭代完成的標誌

class

mylist

(object):

def__init__

(self)

: self.panel =

list()

self.current_index=

0def

add(self, item)

:def

__iter__

(self)

:return self

def__next__

(self)

:if self.current_index<

len(self.panel)

: ret=self.panel[self.current_index]

self.current_index+=

1return ret

else

:raise stopiteration

mylist=mylist(

)mylist.add(

"張三"

)mylist.add(

"李四"

)mylist.add(

"王武"

)for item in mylist:

print

(item)

分析對可迭代物件進行迭代的使用過程,發現沒迭代一次(即在for…in…中每迴圈一次)都會返回物件中的下一條資料,一直向後讀取直到迭代完最後乙個資料的結果。那麼在這個過程中,就應該有乙個特殊的成員去記錄每次訪問到了第幾條資料。這個成員每次迭代都可以記錄好這個資料以便下次迭代,我們把這個能幫助我們進行資料迭代的成員稱為「迭代器」

可迭代物件的本質就是可以向我們提供乙個這樣特殊成員

for item in iterable迴圈的本質就是先通過iter方法獲取可迭代物件的迭代器。然後對獲取到的迭代器不斷的呼叫next方法來獲取下乙個值,並將其賦值給item,當遇到stopiteration異常物件直接終止迴圈

day29-------end

Python基礎篇 從0開始學python

資料型別 流程控制 函式正規表示式 資料型別 字串string 布林boolean 列表listl 123,abc 1.23 l list 123,abc 1.23 元組tuple 字典dict 集合set 日期date 整形int的內建方法 字串str的內建方法 流程控制 巢狀條件判斷 for迴圈...

Python從0開始 學習旅程5

一 資料結構 python中存在三種重要的資料結構,即列表 元組和字典,下面將一一介紹這三種資料結構。列表 例子 in 1 定義列表 ls monday tueaday wednesday thursday friday saturdat in 2 print ls monday tueaday w...

Python學習筆記 0基礎(集合)

本人是一名在校大學生,分享自己的python學習筆記,共同進步。筆記內容 由自己組織語言編寫,為更好的理解。以書學習的同學,以書為標準。一.集合 集合的底層其實就是字典的 鍵物件。它不能重複,無序可變。1.可以建立乙個集合。使用add 可以新增元素。2.使用 set 可將列表 和 元組等可迭代的物件...