迭代是訪問集合元素的一種方式,迭代器是乙個可以記住遍歷的位置的物件。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。
迭代器只能往前不能往後
基本上我們知道的可遍歷物件: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 可將列表 和 元組等可迭代的物件...