(一)索引迭代
python中,迭代永遠是取出元素本身,而非元素的索引。
如果要取索引可以用enumerate()函式
例:
l = ['adam
', '
lisa
', '
bart
', '
paul']
for index, name in
enumerate(l):
print index, '
-', name
結果:
0 - adam1 - 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 =d.values()
for v in
d.values():
print v
結果:[85, 95, 59]
859559
dict除了values()方法外,還有乙個itervalues()方法,用itervalues()方法替代values()方法,迭代效果完全一樣:
d =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 : 85adam : 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...