與其它大多數語言一樣,Python 也擁有 for 循環。你到現在還未曾看到它們的唯一原因就是,Python 在其它太多的方面表現出色,通常你不需要它們。
其它大多數語言沒有像 Python 一樣的強大的 list 數據類型,所以你需要親自做很多事情,指定開始,結束和步長,來定義一定范圍的整數或字符或其它可重復的實體。但是在 Python 中,for 循環簡單地在一個列表上循環,與 list 解析的工作方式相同。
1. for 循環介紹
代碼如下:
>>> li = ['a', 'b', 'e']
>>> for s in li: (1)
... print s (2)
a
e
>>> print "/n".join(li) (3)
a
e
(1) for 循環的語法同 list 解析相似。li 是一個 list,而 s 將從第一個元素開始依次接收每個元素的值。
(2) 像 if 語句或其它任意縮進塊,for 循環可以包含任意數目的代碼行。
(3) 這就是你以前沒看到過 for 循環的原因:至今我們都不需要它。太令人吃驚了,當你想要的只是一個 join 或是 list 解析時,在其它語言中常常需要使用 for 循環。
要做一個 “通常的” (Visual Basic 標準的) 計數 for 循環也非常簡單。
2. 簡單計數
代碼如下:
>>> 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 生成一個整數的 list,通過它來控制循環。我知道它看上去有些奇怪,但是它對計數循環偶爾 (我只是說偶爾) 會有用 。
(2) 我們從來沒這么用過。這是 Visual Basic 的思維風格。擺脫它吧。正確遍歷 list 的方法是前面的例子所展示的。
for 循環不僅僅用于簡單計數。它們可以遍歷任何類型的東西。下面的例子是一個用 for 循環遍歷 dictionary 的例子。
3. 遍歷 dictionary
代碼如下:
>>> 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 是在你的系統上所定義的環境變量的 dictionary。在 Windows 下,這些變量是可以從 MS-DOS 訪問的用戶和系統變量。在 UNIX 下,它們是在你的 shell 啟動腳本中所 export (輸出) 的變量。在 Mac OS 中,沒有環境變量的概念,所以這個 dictionary 為空。
新聞熱點
疑難解答