python 遍歷可迭代對象的實現(xiàn)方法
可迭代(iterable)
迭代(遍歷)就是按照某種順序逐個訪問對象中的每一項。
Python中有很多對象都是可以通過for語句來直接遍歷的,例如list、string、dict等,這些對象都是可迭代的,被稱為可迭代對象。
可以將可迭代對象想象成一個容器,里面存放了有限個元素,并且每個元素都可以從中獲取出來。那么這個容器就是可迭代的,這個容器就是可迭代對象。
所有的可迭代對象都需要實現(xiàn)__iter__方法,該方法就是用于當(dāng)我們在循環(huán)時將可迭代對象轉(zhuǎn)換成迭代器的。
迭代器(iterator)
迭代器是可迭代對象的一個子集。是一個可以記住遍歷的位置的對象,它與列表、元組、集合、字符串這些可迭代對象的區(qū)別就在于__next__()方法的實現(xiàn)。也就是通過該方法可以一個個的將元素取出來。即遍歷可迭代對象的方法就為迭代器。
迭代器支持__iter__()和__next__()方法。其中:iter()方法返回迭代器對象本身,而可迭代對象的該方法則返回其迭代器。
next()方法返回容器的下一個元素,在結(jié)尾時引發(fā)StopIteration異常。
方法1:使用for循環(huán)簡單結(jié)構(gòu)遍歷
對迭代對象直接for循環(huán)遍歷
li=[1,2,3,4] li2=[5,6,7,8] for i in li2: li.append(i) print(li)
[1, 2, 3, 4, 5, 6, 7, 8]
方法2:借用 range() 和 len() 函數(shù)遍歷
這種方法可以使用數(shù)組中常用的alist[i]來遍歷列表
li=[1,2,3,4] li2=[5,6,7,8] for i in range(len(li2)): li.append(li2[i]) print(li)
[1, 2, 3, 4, 5, 6, 7, 8]
方法3:借用 iter() 函數(shù)遍歷
這種方法是利用迭代器的思想,迭代器是一個可以記住遍歷的位置的對象,迭代器有兩個基本的方法:iter() 和 next()。
使用iter(iterable)即可把可迭代對象轉(zhuǎn)換成迭代器;使用next(iterator)來獲取迭代器的下一個值
li3 = [5,6,7,8] for i in iter(li3): print(i)
5
6
7
8
方法4:借用 enumerate() 函數(shù)遍歷
當(dāng)既需要遍歷索引同時需要遍歷元素的時候,可以考慮使用enumerate函數(shù),enumerate函數(shù)接受一個可遍歷的對象,如列表、字符串等
li4 = ['C','C#','JAVA'] for i,li4 in enumerate(li4): print(i+1,li4)
1 C
2 C#
3 JAVA
到此這篇關(guān)于python 遍歷可迭代對象的實現(xiàn)方法的文章就介紹到這了,更多相關(guān)python 遍歷可迭代對象內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python多線程編程(三):threading.Thread類的重要函數(shù)和方法
這篇文章主要介紹了Python多線程編程(三):threading.Thread類的重要函數(shù)和方法,本文講解了線程名稱、join方法、setDaemon方法等內(nèi)容,需要的朋友可以參考下2015-04-04學(xué)會Python數(shù)據(jù)可視化必須嘗試這7個庫
數(shù)據(jù)可視化是使用一些繪圖和圖形更詳細(xì)地理解數(shù)據(jù)的過程.最著名的庫之一是 matplotlib,它可以繪制幾乎所有您可以想象的繪圖類型.matplotlib 唯一的問題是初學(xué)者很難掌握.在本文中,我將介紹七個數(shù)據(jù)可視化庫,你可以嘗試使用它們來代替 matplotlib ,需要的朋友可以參考下2021-06-06使用Python代碼實現(xiàn)PDF文檔與SVG文件之間的轉(zhuǎn)換
PDF作為普遍采用的文件格式,確保了文檔的一致性和可靠性,而SVG(可縮放矢量圖形)則因其矢量性質(zhì),在網(wǎng)頁設(shè)計、高分辨率打印及動態(tài)交互內(nèi)容中展現(xiàn)出無與倫比的優(yōu)勢,本文將介紹如何使用Python將PDF文件轉(zhuǎn)換為SVG文件以及將SVG文件轉(zhuǎn)換為PDF文件,需要的朋友可以參考下2024-05-05tf.nn.conv2d與tf.layers.conv2d的區(qū)別及說明
這篇文章主要介紹了tf.nn.conv2d與tf.layers.conv2d的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02