欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2016年01月19日 15:58:59   作者:樂(lè)晨  
這篇文章主要介紹了舉例講解如何在Python編程中進(jìn)行迭代和遍歷,是Python入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下

迭代
首先理解下什么是迭代,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

相關(guān)文章

  • python 動(dòng)態(tài)生成變量名以及動(dòng)態(tài)獲取變量的變量名方法

    python 動(dòng)態(tài)生成變量名以及動(dòng)態(tài)獲取變量的變量名方法

    今天小編就為大家分享一篇python 動(dòng)態(tài)生成變量名以及動(dòng)態(tài)獲取變量的變量名方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • 淺談python量化 雙均線策略(金叉死叉)

    淺談python量化 雙均線策略(金叉死叉)

    這篇文章主要介紹了淺談python量化 雙均線策略(金叉死叉),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • Python實(shí)現(xiàn)位圖分割的效果

    Python實(shí)現(xiàn)位圖分割的效果

    目前網(wǎng)絡(luò)上大多為用C++或者M(jìn)atlab編寫(xiě)實(shí)現(xiàn)位圖分割,所以本文將使用Python實(shí)現(xiàn)位圖分割這一效果,代碼簡(jiǎn)單易懂,感興趣的小伙伴可以關(guān)注一下
    2021-11-11
  • Python爬蟲(chóng)必備之XPath解析庫(kù)

    Python爬蟲(chóng)必備之XPath解析庫(kù)

    今天給大家?guī)?lái)的是Python爬蟲(chóng)的相關(guān)知識(shí),文章圍繞著XPath解析庫(kù)展開(kāi),文中有非常詳細(xì)的代碼示例及介紹,需要的朋友可以參考下
    2021-06-06
  • 使用python PIL庫(kù)批量對(duì)圖片添加水印的過(guò)程詳解

    使用python PIL庫(kù)批量對(duì)圖片添加水印的過(guò)程詳解

    平常我們想給某些圖片添加文字水印,方法有很多,也有很多的工具可以方便的進(jìn)行,今天主要是對(duì)PIL庫(kù)的應(yīng)用,結(jié)合Python語(yǔ)言批量對(duì)圖片添加水印,文章通過(guò)代碼示例給大家介紹的非常詳細(xì),感興趣的同學(xué)可以參考一下
    2023-11-11
  • 帶你了解Python妙開(kāi)根號(hào)的三種方式

    帶你了解Python妙開(kāi)根號(hào)的三種方式

    這篇文章主要為大家介紹了Python妙開(kāi)根號(hào)的三種方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01
  • Python與shell的3種交互方式介紹

    Python與shell的3種交互方式介紹

    這篇文章主要介紹了Python與shell的3種交互方式介紹,本文講解了os.system、os.popen、subprocess模塊等3種方法,需要的朋友可以參考下
    2015-04-04
  • Python?range()?函數(shù)用法詳解

    Python?range()?函數(shù)用法詳解

    range()是python內(nèi)置函數(shù)它能返回一系列連續(xù)增加的整數(shù),它的工作方式類(lèi)似于分片,可以生成一個(gè)列表對(duì)象,這篇文章主要介紹了Python?range()?函數(shù)用法,需要的朋友可以參考下
    2023-03-03
  • 一文帶你了解Python中Scikit-learn庫(kù)的使用

    一文帶你了解Python中Scikit-learn庫(kù)的使用

    Scikit-learn是Python的一個(gè)開(kāi)源機(jī)器學(xué)習(xí)庫(kù),它支持監(jiān)督和無(wú)監(jiān)督學(xué)習(xí),本文主要來(lái)深入探討一下Scikit-learn的更高級(jí)的特性,感興趣的小伙伴可以了解下
    2023-07-07
  • Python格式化輸出字符串方法小結(jié)【%與format】

    Python格式化輸出字符串方法小結(jié)【%與format】

    這篇文章主要介紹了Python格式化輸出字符串方法,結(jié)合實(shí)例形式總結(jié)分析了使用%與format函數(shù)進(jìn)行字符串格式化操作相關(guān)實(shí)現(xiàn)技巧與注意事項(xiàng),需要的朋友可以參考下
    2018-10-10

最新評(píng)論