技術|Python從零開始系列連載(十九)——疊代器

可迭代對象

可迭代對象:在之前學習的基礎上,可以簡單的理解為可以用for循環遍歷的,如學過的list tuple dict set str

判斷一個對象是否是迭代器:

除了寫for循環試試,我們還有專業的手段~

技術|Python從零開始系列連載(十九)——迭代器

我們可以將數據類型和是否為可迭代對象比較來判斷是否是可以迭代~

發現整型是不能迭代的~

迭代器

迭代器:一定是可迭代對象,擁有next()方法

next()方法可以獲取迭代器的下一個元素

技術|Python從零開始系列連載(十九)——迭代器

我們試著對 list 使用 next()方法,發現拋出異常,提示list不是一個迭代器!

所以可迭代對象不一定是迭代器!

技術|Python從零開始系列連載(十九)——迭代器

我們導入Iterator模塊

使用iter方法將list轉為了一個迭代器!

然後我們使用next()獲取迭代器下一個對象:

技術|Python從零開始系列連載(十九)——迭代器

當獲取完之後,再次獲取下一個會拋出異常!

小明:老溼,你說這個迭代器有啥用啊,感覺華而不實!

額,小明啊,迭代器是有很多優點的,比如,我想訪問集合中一個元素,你會怎麼做?

小明:看我的!

技術|Python從零開始系列連載(十九)——迭代器

小明啊,如果我要獲取一個集合中的元素呢?

小明:這個。。這個。。集合沒有索引啊,你不是難為我麼?!

技術|Python從零開始系列連載(十九)——迭代器

所以,這不就是迭代器的優點了麼!

看好了:

技術|Python從零開始系列連載(十九)——迭代器

小明:老溼,在迭代器集合中,如果我想獲取前一個元素怎麼辦?

小明啊,這個問題問得好,這也是迭代器的特點,他只能往後next(),不能回退

除此之外,迭代器還有一大優點是不要求事先準備好整個迭代過程中所有的元素

迭代器僅僅在迭代到某個元素時才計算該元素,而在這之前或之後,元素可以不存在或者被銷燬

這個特點使得它特別適合用於遍歷一些巨大的或是無限的集合,比如幾個G的文件

所以有點像內存,我們把正在運行的程序放進內存,運行完就突出內存,每次只放正在運行的進入

充分體現了局部性原理~

小明:我好像懂了!小紅,你還不太懂吧,放學我請你吃飯,給你講講吧【自信臉】

小紅:emmm,我早懂了【高冷臉】

今天作業:

1.自己創建list tuple dict set str int float bool 類型數據,然後判斷是否是可迭代對象

2.將1中的可迭代對象轉為迭代器,使用next()方法迭代操作

自己不敲代碼永遠學不會寫代碼

下課

人生苦短,我選Python

未完待續,連載中......


分享到:


相關文章: