words = ['this','is','an','ex','parrot']
for word in words
print word
numbers = [0,1,2,3,4,5,6,7,8,9]
for number in numbers:
print number
Range函數的工做方式相似於分片。它包含下限,但不包含上限,默認下限爲0。
>>>range(0,10)
[1,2,3,4,5,6,7,8,9]
>>>range(10)
[1,2,3,4,5,6,7,8,9]
for number in range(1,101)
print number
5.5.3 循環遍歷字典元素
d = {'x':1,'y':2,'z':3}
for key,value in d.items():
print key,'correponds',value
5.5.4 一些迭代代工具
1. 並行迭代
names = ['anne','beth','george','damon']
ages = [12,45,32,102]
for i in range(len(names)):
print names[i],'is',ages[i],'year old'
內建的zip函數能夠用來進行並行迭代,能夠把兩個序列「壓縮「在一塊兒,而後返回一個元祖的列表:
zip(names,ages)
[('anne',12),('beth',45),('george',32),('damon',102)]
for name,age in zip(names,ages):
print name,'is',age,'year old'
zip函數也能夠做用於任意多的序列。並且zip能夠應付不等長的序列:當最短的序列」用完「的時候就會中止。
3. 翻轉和序列迭代
reversed和sorted:它們同列表的reverse和sort方法相似,但做用於任何可迭代對象上,不是原地修改對象,而是返回反轉或排序後的版本。
5.5.5 跳出循環
1. break
2. continue
3. while True/break語句
Python中的whlie和for循環很是靈活,但一旦使用while語句就會遇到一個須要更多功能的問題。若是須要當用戶在提示符下輸入單詞是作一些事情,而且在用戶不輸入單詞後結束循環。可使用下面的方法:
while True:
word = raw_input('Please enter a word: ')
if not word: break
print 'The word was ' + word
5.5.6 循環中else子句
from math import sqrt
for n in range (99,81,-1):
root = sqrt(n)
if root == int(root):
print n
break
else:
print "Didn't find it!"
再循環中增長一個else子句——它僅在沒有調用break時執行。
5.7 三人行
pass、del和exec。
5.7.1 什麼都沒發生
有的時候,程序什麼事情都不用作。pass語句:
它能夠在代碼中做佔位符使用。好比程序須要啊一個if語句,而後進行測試,可是缺乏其中一個語句塊的代碼。代碼不會執行,由於Python中空代碼塊是非法的。解決發發就是在語句塊中加上一個pass語句:
if name == 'Ralph Auldus Melish':
print 'Welcome!'
elif name == 'Enid':
#還沒完……
pass
elif name == 'Bill Gates':
print 'Access Denied'
5.7.2 使用del刪除
使用del語句,它不只會一出一個對象的引用,也會移除那個名字自己。、
5.7.3 使用exec和eval執行和求值字符串
1. exec
>>> exec "print 'Hello,word!'"
Hello,word!
exec與劇中最有用的地方在於能夠動態地建立代碼字符串。
實在沒看懂 = =
2. eval
eval(用於」求值「)是相似於exec的內建函數。exec語句會執行一系列Python語句,而eval會計算Python表達式(以字符串形式書寫),而且返回結果值,(exec語句並不返回任何對象,由於它自己就是語句)。