舉例講解如何在Python編程中進行迭代和遍歷
迭代
首先理解下什么是迭代,python中所有從左往右掃面對象的方式都是可迭代的
有哪些方式是可迭代的:
1.文件操作
我們讀取文件的時候,會用到一個readline()方法,其實它就是一個迭代器,它會返回當前的數(shù)據(jù),然后自動的調用內置的next()方法來讓文件的讀取頭自動的移動到當前的下面一行,準備下次的讀取,到達文件末尾時,就會返回空字符串.
>>> 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!"
用上面這樣方式來讀取文件內容的話,速度很快,內存占用也比較低,特別適合操作大文件.
下面這個方式適合操作一些小的文件,速度和效率沒有上面的好,所以建議以后操作文件的話,盡量用上面的。
>>> for i in open('hello.py').readlines(): ... print i ... #!/usr/bin/python2.5 print "hello.word!"
read方法和readline方法,
read()方法把整個文件的內容放到字符串里
readline()方法則把文件的內容按照行為單位放到列表里。
一般要替換文件里的某個字符的話,最好有readline,然后用循環(huán)把一行一行內容循環(huán)出來,再查找替換,這樣效率比整個讀到一個字符串里來查找匹配效果更高。
2 for循環(huán)
例如:
>>> for i in range(5): ... print(i) ...
它中間處理的過程和下面的是一樣的:
>>> 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
每次調用迭代器調用next()方法返回結果,并讓文件指針往下移動一行,最后已StopIteration異常結束迭代。
3.列表解析:
相比python for循環(huán)速度會快很多
例如:
>>> L=[x+10 for x in range(10)] >>> L
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
python會在解釋器里對range(10)進行迭代,依次把列表里的內容取出來,賦值給最左邊的x,然后執(zhí)行x+10的操作,
并且把執(zhí)行好的結果保存在列表里。等range(10)迭代完以后就新生成了一個列表,結果就是[10,11,12,13,14,15,16,17,18,19]
從上面可以看出,這也是建立python 列表的一個方法。
上面例子也可以用for循環(huán)來實現(xiàn).
>>> res=[] >>> for x in range(10): ... res.append(x+10) ... >>> res [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
從上面可以看出,python列表解析比手動的for 更加精簡,而且運行的更快(往往速度回快一倍),因為他們的迭代在解析器內部是以C語言的速度執(zhí)行的,而不是以手動python代碼執(zhí)行的,特別對于較大的數(shù)據(jù)集合,這是使用列表解析的一個主要的性能優(yōu)點.
遍歷
1.通過序列取元素的方法進行遍歷
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.通過序列本身偏移指數(shù)(索引)的方法進行遍歷
也就是迭代序列索引,注:迭代,重復執(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.通過字典items方法,獲取所有鍵值對,在利用元組拆分的方法獲得對應值.
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迭代用法實例教程
- Python編程實現(xiàn)二分法和牛頓迭代法求平方根代碼
- python迭代dict的key和value的方法
- Python用zip函數(shù)同時遍歷多個迭代器示例詳解
- python 循環(huán)while和for in簡單實例
- 在Python中,不用while和for循環(huán)遍歷列表的實例
- 對python For 循環(huán)的三種遍歷方式解析
- python中for用來遍歷range函數(shù)的方法
- python中for語句簡單遍歷數(shù)據(jù)的方法
- Python 迭代,for...in遍歷,迭代原理與應用示例
相關文章
python 動態(tài)生成變量名以及動態(tài)獲取變量的變量名方法
今天小編就為大家分享一篇python 動態(tài)生成變量名以及動態(tài)獲取變量的變量名方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01