淺析python中的迭代與迭代對象
什么是python的迭代
如果給定一個list或tuple,我們可以通過for循環(huán)來遍歷這個list或tuple,這種遍歷我們稱為迭代(Iteration)。
(在Python中,迭代是通過for ... in來完成的)
Python的for循環(huán)抽象程度要高于C的for循環(huán),因為Python的for循環(huán)不僅可以用在list或tuple上,還可以作用在其他可迭代對象上。
(可以直接作用于for循環(huán)的對象統(tǒng)稱為可迭代對象(Iterable),如list、tuple、dict、set、str等。)
list這種數(shù)據(jù)類型雖然有下標(biāo),但很多其他數(shù)據(jù)類型是沒有下標(biāo)的,但是,只要是python的可迭代對象,無論有無下標(biāo),都可以迭代,比如dict就可以迭代:
>>> d = {'a': 1, 'b': 2, 'c': 3}
>>> for key in d:... print(key)
...
a
c
b
因為dict的存儲不是按照list的方式順序排列,所以,迭代出的結(jié)果順序很可能不一樣。
默認情況下,dict迭代的是key。如果要迭代value,可以用for value in d.values(),如果要同時迭代key和value,可以用for k, v in d.items()。
由于字符串也是可迭代對象,因此,也可以作用于for循環(huán):
>>> for ch in 'ABC': ... print(ch) ...ABC
所以,當(dāng)我們使用for循環(huán)時,只要作用于一個可迭代對象,for循環(huán)就可以正常運行,而我們不太關(guān)心該對象究竟是list還是其他數(shù)據(jù)類型。
那么,如何判斷一個對象是可迭代對象呢?方法是通過collections模塊的Iterable類型判斷:
>>> from collections import Iterable
>>> isinstance('abc', Iterable) # str是否可迭代
True
>>> isinstance([1,2,3], Iterable) # list是否可迭代
True
>>> isinstance(123, Iterable) # 整數(shù)是否可迭代
False
最后一個小問題,如果要對list實現(xiàn)類似Java那樣的下標(biāo)循環(huán)怎么辦?Python內(nèi)置的enumerate函數(shù)可以把一個list變成索引-元素對,這樣就可以在for循環(huán)中同時迭代索引和元素本身:
>>> for i, value in enumerate(['A', 'B', 'C']): ... print(i, value) ... 0 A 1 B 2 C
上面的for循環(huán)里,同時引用了兩個變量,在Python里是很常見的,比如下面的代碼:
>>> for x, y in [(1, 1), (2, 4), (3, 9)]: ... print(x, y) ... 1 1 2 4 3 9
以上就是本篇文章所講述的所有內(nèi)容,這篇文章主要介紹了相關(guān)于python中迭代和迭代對象的知識,希望你能借助資料從而理解上述所說的內(nèi)容。希望我在這片文章所講述的內(nèi)容能夠?qū)δ阌兴鶐椭屇銓W(xué)習(xí)python更加輕松,感謝大家對腳本之家的支持。
相關(guān)文章
Python實現(xiàn)發(fā)送警告通知到企業(yè)微信方法詳解
常見的報警方式有:郵件,電話,短信,微信。本文將介紹如何利用Python發(fā)送警告通知到企業(yè)微信,文中的示例代碼有一定的參考價值,感興趣的可以了解一下2022-01-01
python統(tǒng)計列表中元素出現(xiàn)次數(shù)的三種方法
這篇文章主要介紹了python統(tǒng)計列表中元素出現(xiàn)次數(shù)的三種方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-08-08
python數(shù)據(jù)處理——對pandas進行數(shù)據(jù)變頻或插值實例
這篇文章主要介紹了python數(shù)據(jù)處理——對pandas進行數(shù)據(jù)變頻或插值實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
淺談Python中os模塊及shutil模塊的常規(guī)操作
這篇文章主要介紹了淺談Python中os模塊及shutil模塊的常規(guī)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
python中l(wèi)ambda與def用法對比實例分析
這篇文章主要介紹了python中l(wèi)ambda與def用法對比,實例分析了lambda與def的區(qū)別與使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-04-04
Python 數(shù)據(jù)分析之逐塊讀取文本的實現(xiàn)
這篇文章主要介紹了Python 數(shù)據(jù)分析之逐塊讀取文本的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12

