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

Python中for循環(huán)詳解

 更新時間:2014年01月17日 16:26:54   作者:  
這篇文章主要介紹了Python中for循環(huán),有需要的朋友可以參考一下

與其它大多數(shù)語言一樣,Python 也擁有 for 循環(huán)。你到現(xiàn)在還未曾看到它們的唯一原因就是,Python 在其它太多的方面表現(xiàn)出色,通常你不需要它們。

其它大多數(shù)語言沒有像 Python 一樣的強大的 list 數(shù)據(jù)類型,所以你需要親自做很多事情,指定開始,結(jié)束和步長,來定義一定范圍的整數(shù)或字符或其它可重復(fù)的實體。但是在 Python 中,for 循環(huán)簡單地在一個列表上循環(huán),與 list 解析的工作方式相同。

1. for  循環(huán)介紹

復(fù)制代碼 代碼如下:

>>> li = ['a', 'b', 'e']
>>> for s in li:         (1)
...     print s          (2)
a

e
>>> print "\n".join(li)  (3)
a

e

(1)  for 循環(huán)的語法同 list 解析相似。li 是一個 list,而 s 將從第一個元素開始依次接收每個元素的值。
(2)  像 if 語句或其它任意縮進塊,for 循環(huán)可以包含任意數(shù)目的代碼行。
(3)  這就是你以前沒看到過 for 循環(huán)的原因:至今我們都不需要它。太令人吃驚了,當你想要的只是一個 join 或是 list 解析時,在其它語言中常常需要使用 for 循環(huán)。

要做一個 “通常的” (Visual Basic 標準的) 計數(shù) for 循環(huán)也非常簡單。

2. 簡單計數(shù)

復(fù)制代碼 代碼如下:

>>> for i in range(5):             (1)
...     print i
0
1
2
3
4
>>> li = ['a', 'b', 'c', 'd', 'e']
>>> for i in range(len(li)):       (2)
- 104 -Dive Into Python http://diveintopython.org/
...     print li[i]
a

c
d
e

(1)  range 生成一個整數(shù)的 list,通過它來控制循環(huán)。我知道它看上去有些奇怪,但是它對計數(shù)循環(huán)偶爾 (我只是說偶爾) 會有用 。
(2)  我們從來沒這么用過。這是 Visual Basic 的思維風格。擺脫它吧。正確遍歷 list 的方法是前面的例子所展示的。

for 循環(huán)不僅僅用于簡單計數(shù)。它們可以遍歷任何類型的東西。下面的例子是一個用 for 循環(huán)遍歷 dictionary 的例子。

3. 遍歷  dictionary

復(fù)制代碼 代碼如下:

>>> import os
>>> for k, v in os.environ.items():      (1) (2)
...     print "%s=%s" % (k, v)
USERPROFILE=C:\Documents and Settings\mpilgrim
OS=Windows_NT
COMPUTERNAME=MPILGRIM
USERNAME=mpilgrim
[...略...]
>>> print "\n".join(["%s=%s" % (k, v)
...     for k, v in os.environ.items()]) (3)
USERPROFILE=C:\Documents and Settings\mpilgrim
OS=Windows_NT
COMPUTERNAME=MPILGRIM
USERNAME=mpilgrim
[...略...]

(1)  os.environ 是在你的系統(tǒng)上所定義的環(huán)境變量的 dictionary。在 Windows 下,這些變量是可以從 MS-DOS 訪問的用戶和系統(tǒng)變量。在 UNIX 下,它們是在你的 shell 啟動腳本中所 export (輸出) 的變量。在 Mac OS 中,沒有環(huán)境變量的概念,所以這個 dictionary 為空。
(2)  os.environ.items() 返回一個 tuple 的 list:[(key1, value1), (key2, value2), ...]。for 循環(huán)對這個 list 進行遍歷。第一輪,它將 key1 賦給 k ,value1 賦給 v,所以 k = USERPROFILE,v = C:\Documents and Settings\mpilgrim。第二輪,k 得到第二個鍵字 OS,v 得到相應(yīng)的值 Windows_NT。
(3)  使用多變量賦值和 list 解析,你可以使用單行語句來替換整個 for 循環(huán)。在實際的編碼中是否這樣做只是個人風格問題;我喜歡它是因為,將一個dictionary 映射到一個 list,然后將 list 合并成一個字符串,這一過程顯得很清晰。其它的程序員寧愿將其寫成一個 for 循環(huán)。請注意在兩種情況下輸出是一樣的,然而這一版本稍微快一些,因為它只有一條 print 語句而不是許多。

現(xiàn)在我們來看看在 第 5 章介紹的樣例程序 fileinfo.py 中 MP3FileInfo 的 for 循環(huán) 。

復(fù)制代碼 代碼如下:

    tagDataMap = {"title"   : (  3,  33, stripnulls),
                  "artist"  : ( 33,  63, stripnulls),
                  "album"   : ( 63,  93, stripnulls),
                  "year"    : ( 93,  97, stripnulls),
                  "comment" : ( 97, 126, stripnulls),
                  "genre"   : (127, 128, ord)}                               (1)
    .
    .
    .
            if tagdata[:3] == "TAG":
                for tag, (start, end, parseFunc) in self.tagDataMap.items(): (2)
                    self[tag] = parseFunc(tagdata[start:end])                (3)

(1)  tagDataMap 是一個類屬性,它定義了我們正在一個 MP3 文件中搜索的標記。標記存儲為定長字段,只要我們讀出文件最后 128 個字節(jié),那么第 3 到 32 字節(jié)總是歌曲的名字,33-62 總是歌手的名字,63-92 為專輯的名字,等等。請注意 tagDataMap 是一個 tuple 的 dictionary,每個 tuple 包含兩個整數(shù)和一個函數(shù)引用。
(2)  這個看上去復(fù)雜一些,但其實并非如此。這里的 for 變量結(jié)構(gòu)與 items 所返回的 list 的元素的結(jié)構(gòu)相匹配。記住,items 返回一個形如 (key, value) 的 tuple 的 list。list 第一個元素是 ("title", (3, 33, <function stripnulls>)),所以循環(huán)的第一輪,tag 為 "title",start 為 3,end 為 33,parseFunc 為函數(shù) stripnulls。
(3)  現(xiàn)在我們已經(jīng)從一個單個的 MP3 標記中提取出了所有的參數(shù),將標記數(shù)據(jù)保存起來挺容易。我們從 start 到 end 對 tagdata 進行分片,從而得到這個標記的實際數(shù)據(jù),調(diào)用 parseFunc 對數(shù)據(jù)進行后續(xù)的處理,接著將
parseFunc 的返回值作為值賦值給偽字典 self 中的鍵字 tag。在遍歷完 tagDataMap 中所有元素之后,self 擁有了所有標記的值,你知道看上去是什么樣。

相關(guān)文章

  • python 使用事件對象asyncio.Event來同步協(xié)程的操作

    python 使用事件對象asyncio.Event來同步協(xié)程的操作

    這篇文章主要介紹了python 使用事件對象asyncio.Event來同步協(xié)程的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Python中Jupyter notebook快捷鍵總結(jié)

    Python中Jupyter notebook快捷鍵總結(jié)

    在本篇文章里小編給大家整理的是一篇關(guān)于Python中Jupyter notebook快捷鍵總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-04-04
  • Win10?Anaconda?新建環(huán)境安裝python-pcl的步驟

    Win10?Anaconda?新建環(huán)境安裝python-pcl的步驟

    這篇文章主要介紹了Win10?Anaconda?新建環(huán)境安裝python-pcl的方法,至于VS環(huán)境下安裝C++?版本的pcl也可以按照此文提供的步驟安裝實現(xiàn),需要的朋友可以參考下
    2022-04-04
  • pytorch?K折交叉驗證過程說明及實現(xiàn)方式

    pytorch?K折交叉驗證過程說明及實現(xiàn)方式

    這篇文章主要介紹了pytorch?K折交叉驗證過程說明及實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Python Pygame中精靈和碰撞檢測詳解

    Python Pygame中精靈和碰撞檢測詳解

    對于游戲中出現(xiàn)的每一樣?xùn)|西,比如磚塊箱子水管地面,還有人物都可以看成是一個獨立的物體,所以每個物體類都繼承了pygame的精靈類pg.sprite.Sprite,這篇文章主要給大家介紹了關(guān)于Python Pygame中精靈和碰撞檢測的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • Windows下Anaconda的安裝和簡單使用方法

    Windows下Anaconda的安裝和簡單使用方法

    這篇文章主要介紹了Windows下Anaconda的安裝和簡單使用方法,需要的朋友可以參考下
    2018-01-01
  • Python??序列化反序列化和異常處理的問題小結(jié)

    Python??序列化反序列化和異常處理的問題小結(jié)

    這篇文章主要介紹了Python?序列化反序列化和異常處理,本文結(jié)合示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12
  • Pandas分組與排序的實現(xiàn)

    Pandas分組與排序的實現(xiàn)

    這篇文章主要介紹了Pandas分組與排序的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 利用Python中xlwt模塊操作excel的示例詳解

    利用Python中xlwt模塊操作excel的示例詳解

    在開發(fā)中,我們最常見的數(shù)據(jù)問題之一,就是對數(shù)據(jù)進行導(dǎo)出整理給運營人員,所以操作excel就顯得重中之重,在python中操作excel可以借助xlwt模塊。感興趣的可以跟隨小編一起學(xué)習(xí)一下這篇文章
    2022-01-01
  • Python使用folium excel繪制point

    Python使用folium excel繪制point

    今天小編就為大家分享一篇關(guān)于Python使用folium excel繪制point,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01

最新評論