国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

舉例講解如何在Python編程中進(jìn)行迭代和遍歷

2019-11-25 16:58:48
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

迭代
首先理解下什么是迭代,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.5print "hello.word!"

用上面這樣方式來(lái)讀取文件內(nèi)容的話,速度很快,內(nèi)存占用也比較低,特別適合操作大文件.

下面這個(gè)方式適合操作一些小的文件,速度和效率沒(méi)有上面的好,所以建議以后操作文件的話,盡量用上面的。

>>> for i in open('hello.py').readlines():...     print i... #!/usr/bin/python2.5print "hello.word!"

read方法和readline方法,
read()方法把整個(gè)文件的內(nèi)容放到字符串里
readline()方法則把文件的內(nèi)容按照行為單位放到列表里。
一般要替換文件里的某個(gè)字符的話,最好有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.5for 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.5x='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.5z = {1:'a',2:'b',3:'c'}for i in z:  print z[i]

root@10.1.6.200:python# python 5.py 
abc

2.通過(guò)字典items方法,獲取所有鍵值對(duì),在利用元組拆分的方法獲得對(duì)應(yīng)值.

root@10.1.6.200:python# cat 5.py 
#!/usr/bin/python2.5z = {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 a2 b3 c

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 都江堰市| 长沙县| 陕西省| 钦州市| 分宜县| 比如县| 通城县| 五台县| 蒲江县| 扎鲁特旗| 澄江县| 兴和县| 青神县| 西平县| 内乡县| 广安市| 东兰县| 邵阳县| 平阳县| 虎林市| 公主岭市| 黑龙江省| 巴青县| 顺平县| 莫力| 金乡县| 黑山县| 陆良县| 甘孜| 察哈| 汽车| 保定市| 如东县| 宜阳县| 陕西省| 稻城县| 苏尼特右旗| 安徽省| 万宁市| 南郑县| 永济市|