舉例講解如何在Python編程中進(jìn)行迭代和遍歷
迭代
首先理解下什么是迭代,python中所有從左往右掃面對(duì)象的方式都是可迭代的
有哪些方式是可迭代的:
1.文件操作
我們讀取文件的時(shí)候,會(huì)用到一個(gè)readline()方法,其實(shí)它就是一個(gè)迭代器,它會(huì)返回當(dāng)前的數(shù)據(jù),然后自動(dòng)的調(diào)用內(nèi)置的next()方法來(lái)讓文件的讀取頭自動(dòng)的移動(dòng)到當(dāng)前的下面一行,準(zhǔn)備下次的讀取,到達(dá)文件末尾時(shí),就會(huì)返回空字符串.
>>> f=open('hello.py')
>>> f.readline()
'#!/usr/bin/python2.5\n'
>>> f.readline()
'print "hello.word!"\n'
>>> f.readline()
'\n'
>>> f.readline()
''
>>> for i in open('hello.py'):
... print(i)
...
#!/usr/bin/python2.5
print "hello.word!"
用上面這樣方式來(lái)讀取文件內(nèi)容的話(huà),速度很快,內(nèi)存占用也比較低,特別適合操作大文件.
下面這個(gè)方式適合操作一些小的文件,速度和效率沒(méi)有上面的好,所以建議以后操作文件的話(huà),盡量用上面的。
>>> for i in open('hello.py').readlines():
... print i
...
#!/usr/bin/python2.5
print "hello.word!"
read方法和readline方法,
read()方法把整個(gè)文件的內(nèi)容放到字符串里
readline()方法則把文件的內(nèi)容按照行為單位放到列表里。
一般要替換文件里的某個(gè)字符的話(huà),最好有readline,然后用循環(huán)把一行一行內(nèi)容循環(huán)出來(lái),再查找替換,這樣效率比整個(gè)讀到一個(gè)字符串里來(lái)查找匹配效果更高。
2 for循環(huán)
例如:
>>> for i in range(5): ... print(i) ...
它中間處理的過(guò)程和下面的是一樣的:
>>> L=[0,1,2,3,4] >>> I=iter(L) >>> I.next() 0 >>> I.next() 1 >>> I.next() 2 >>> I.next() 3 >>> I.next() 4 >>> I.next()
Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration
每次調(diào)用迭代器調(diào)用next()方法返回結(jié)果,并讓文件指針往下移動(dòng)一行,最后已StopIteration異常結(jié)束迭代。
3.列表解析:
相比python for循環(huán)速度會(huì)快很多
例如:
>>> L=[x+10 for x in range(10)] >>> L
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
python會(huì)在解釋器里對(duì)range(10)進(jìn)行迭代,依次把列表里的內(nèi)容取出來(lái),賦值給最左邊的x,然后執(zhí)行x+10的操作,
并且把執(zhí)行好的結(jié)果保存在列表里。等range(10)迭代完以后就新生成了一個(gè)列表,結(jié)果就是[10,11,12,13,14,15,16,17,18,19]
從上面可以看出,這也是建立python 列表的一個(gè)方法。
上面例子也可以用for循環(huán)來(lái)實(shí)現(xiàn).
>>> res=[] >>> for x in range(10): ... res.append(x+10) ... >>> res [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
從上面可以看出,python列表解析比手動(dòng)的for 更加精簡(jiǎn),而且運(yùn)行的更快(往往速度回快一倍),因?yàn)樗麄兊牡诮馕銎鲀?nèi)部是以C語(yǔ)言的速度執(zhí)行的,而不是以手動(dòng)python代碼執(zhí)行的,特別對(duì)于較大的數(shù)據(jù)集合,這是使用列表解析的一個(gè)主要的性能優(yōu)點(diǎn).
遍歷
1.通過(guò)序列取元素的方法進(jìn)行遍歷
root@10.1.6.200:python# vim 3.py
#!/usr/bin/python2.5 for i in 'hello': #序列里的字符串 print i, y = [1,2,3,4,5,6] #列表 for i in y: print i,
root@10.1.6.200:python# python 3.py
h e l l o 1 2 3 4 5 6
2.通過(guò)序列本身偏移指數(shù)(索引)的方法進(jìn)行遍歷
也就是迭代序列索引,注:迭代,重復(fù)執(zhí)行一條指令.
root@10.1.6.200:python# vim 3.py
#!/usr/bin/python2.5 x='hello' for i in range(len(x)): print x[i] y = [1,2,3,4,5,6] for i in range(len(y)): print y[i],
root@10.1.6.200:python# python 3.py
h e l l o 1 2 3 4 5 6
字典有2種方式取到其值:
1.先取字典key,在取索引的值
root@10.1.6.200:python# vim 5.py
#!/usr/bin/python2.5
z = {1:'a',2:'b',3:'c'}
for i in z:
print z[i]
root@10.1.6.200:python# python 5.py
a b c
2.通過(guò)字典items方法,獲取所有鍵值對(duì),在利用元組拆分的方法獲得對(duì)應(yīng)值.
root@10.1.6.200:python# cat 5.py
#!/usr/bin/python2.5
z = {1:'a',2:'b',3:'c'}
print z.items()
for m,n in z.items():
print m,n
root@10.1.6.200:python# python 5.py
[(1, 'a'), (2, 'b'), (3, 'c')] 1 a 2 b 3 c
- 深入解析Python中的list列表及其切片和迭代操作
- Python迭代用法實(shí)例教程
- Python編程實(shí)現(xiàn)二分法和牛頓迭代法求平方根代碼
- python迭代dict的key和value的方法
- Python用zip函數(shù)同時(shí)遍歷多個(gè)迭代器示例詳解
- python 循環(huán)while和for in簡(jiǎn)單實(shí)例
- 在Python中,不用while和for循環(huán)遍歷列表的實(shí)例
- 對(duì)python For 循環(huán)的三種遍歷方式解析
- python中for用來(lái)遍歷range函數(shù)的方法
- python中for語(yǔ)句簡(jiǎn)單遍歷數(shù)據(jù)的方法
- Python 迭代,for...in遍歷,迭代原理與應(yīng)用示例
相關(guān)文章
Python如何執(zhí)行精確的浮點(diǎn)數(shù)運(yùn)算
這篇文章主要介紹了Python如何執(zhí)行精確的浮點(diǎn)數(shù)運(yùn)算,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07
利用python3隨機(jī)生成中文字符的實(shí)現(xiàn)方法
最近在學(xué)習(xí)python3,發(fā)現(xiàn)網(wǎng)上關(guān)于ptyhon3隨機(jī)生成中文的資料非常少,所以決定將自己實(shí)現(xiàn)的方法分享下,下面這篇文章主要給大家介紹了關(guān)于利用python3隨機(jī)生成中文字符的實(shí)現(xiàn)方法,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-11-11
python可視化大屏庫(kù)big_screen示例詳解
提到數(shù)據(jù)可視化,我們會(huì)想到 Plotly、Matplotlib、Pyecharts等可視化庫(kù),或者一些商用軟件Tableau、FineBI等等。如果你希望操作更簡(jiǎn)單、展現(xiàn)效果更強(qiáng)大,那么這款工具 big_screen 更適合2021-11-11
詳解Python中數(shù)據(jù)類(lèi)型的轉(zhuǎn)換
這篇文章主要為大家詳細(xì)介紹了Python中數(shù)據(jù)類(lèi)型轉(zhuǎn)換的相關(guān)資料,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴可以了解一下2023-03-03
淺析AST抽象語(yǔ)法樹(shù)及Python代碼實(shí)現(xiàn)
Abstract Syntax Tree抽象語(yǔ)法樹(shù)簡(jiǎn)寫(xiě)為ATS,是相當(dāng)于用樹(shù)結(jié)構(gòu)將代碼程式表現(xiàn)出來(lái)的一種數(shù)據(jù)結(jié)構(gòu),這里我們就來(lái)淺析AST抽象語(yǔ)法樹(shù)及Python代碼實(shí)現(xiàn)2016-06-06
詳解python命令提示符窗口下如何運(yùn)行python腳本
這篇文章主要介紹了詳解python命令提示符窗口下如何運(yùn)行python腳本,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
pandas參數(shù)設(shè)置的實(shí)用小技巧
這篇文章主要給大家介紹了關(guān)于pandas參數(shù)設(shè)置的實(shí)用小技巧,文中通過(guò)實(shí)例代碼結(jié)束的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用pandas具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08

