Python第一天 迭代

2021-09-09 01:31:03 字數 2829 閱讀 3314

(一)索引迭代

python中,迭代永遠是取出元素本身,而非元素的索引。

如果要取索引可以用enumerate()函式

例:

l = ['

adam

', '

lisa

', '

bart

', '

paul']

for index, name in

enumerate(l):

print index, '

-', name

結果:

0 - adam

1 - lisa

2 - bart

3 - paul

使用 enumerate() 函式,我們可以在for迴圈中同時繫結索引index和元素name。但是,這不是 enumerate() 的特殊語法。實際上,enumerate() 函式把:['adam', 'lisa', 'bart', 'paul']變成了類似:[(0, 'adam'), (1, 'lisa'), (2, 'bart'), (3, 'paul')]

因此,迭代的每乙個元素實際上是乙個tuple:

for t in enumerate(l):

index = t[0]

name = t[1]

print index, '-', name

如果我們知道每個tuple元素都包含兩個元素,for迴圈又可以進一步簡寫為:

for index, name in enumerate(l):

print index, '-', name

這樣不但**更簡單,而且還少了兩條賦值語句。

可見,索引迭代也不是真的按索引訪問,而是由 enumerate() 函式自動把每個元素變成 (index, element) 這樣的tuple,再迭代,就同時獲得了索引和元素本身。

(二)迭代dict的value

我們已經了解了dict物件本身就是可迭代物件,用 for 迴圈直接迭代 dict,可以每次拿到dict的乙個key。

如果我們希望迭代 dict 物件的value,應該怎麼做?

dict 物件有乙個values() 方法,這個方法把dict轉換成乙個包含所有value的list,這樣,我們迭代的就是 dict的每乙個 value:

d = 

print

d.values()

for v in

d.values():

print v

結果:

[85, 95, 59]

85

9559

dict除了values()方法外,還有乙個itervalues()方法,用itervalues()方法替代values()方法,迭代效果完全一樣:
d = 

print

d.itervalues()

for v in

d.itervalues():

print v

結果:

85

9559

那這兩個方法有何不同之處呢?

1.values()方法實際上把乙個 dict 轉換成了包含 value 的list。

2. 但是itervalues()方法不會轉換,它會在迭代過程中依次從 dict 中取出 value,所以 itervalues() 方法比 values() 方法節省了生成 list 所需的記憶體。

3. 列印 itervalues() 發現它返回乙個 物件,這說明在python中,for 迴圈可作用的迭代物件遠不止 list,tuple,str,unicode,dict等,任何可迭代物件都可以作用於for迴圈,而內部如何迭代我們通常並不用關心。

如果乙個物件說自己可迭代,那我們就直接用 for 迴圈去迭代它,可見,迭代是一種抽象的資料操作,它不對迭代物件內部的資料有任何要求。

(三)迭代dict的key:

dict 物件的items()方法返回的值:

d =
print d.items()
[('lisa', 85), ('adam', 95), ('bart', 59)]

可以看到,items() 方法把dict物件轉換成了包含tuple的list,我們對這個list進行迭代,可以同時獲得key和value:

for key, value in d.items():
print key, ':', value

結果:

lisa : 85

adam : 95

bart : 59

和 values() 有乙個 itervalues() 類似,items()也有乙個對應的iteritems(),iteritems() 不把dict轉換成list,而是在迭代過程中不斷給出 tuple,所以, iteritems() 不占用額外的記憶體。

Python 學習第一天

今天在酷殼網上看了一篇很受啟發的文章 程式設計師技術練級攻略 介紹了乙個程式設計師從啟蒙入門,高階加深,到高階深入,所需要掌握的技術和應該看的書,從今天開始希望乙個星期能把python學會,當然肯定是皮毛了。python3.x之前學習的 學習python的 照著上面的例子敲了一下,發現第乙個就錯了,...

Python學習第一天

大綱 一,python版本的選擇 2.7.x和3.4.x 二,直譯器 編譯器 編輯器的介紹 三,環境變數配置 windows和linux 四,pycharm安裝及屬性配置 windows和linux 五,第乙個程式 hello,moocie!為什麼選擇python?python是一種物件導向 解釋型...

python的第一天

一般linux和mac電腦都有帶python,注意不要覆蓋以前的python版本,linux有的工具是python寫的,覆蓋了原來的可能導致系統出問題。1.cd到原始碼目錄 configure prefix usr local python27 把你要安裝的版本放在 usr local python...