今天是二零一伍年八月十六日
1.發現一個新函數enumerate(),它的功能是提供更好的序列檢索。我們一般的檢索方法是:
# enumerate.py
list = [ 1 , 2 , 3 ]
for i in range( 0 , len(list) ):
print ( i , list[i] )
我們使用到enumerate()函數後:
# enumerate.py
list = [ 1 , 2 , 3 ]
for index , text in enumerate(list):
print ( index , text )
這個函數會將一個序列重組成一個索引序列,而我們使用for循環時,也可以不只一個變量的去循環,這樣的一對Index和text也被視爲一對tuple。而這樣的一個序列是專門的數據結構,叫做<class 'enumerate'>。
2.而還有一個比enumerate函數更高級的函數,叫做Zip函數。如果說enumerate函數只是單純的把元素在序列中的檢索和元素一一搭配的話,Zip函數就是把任意的多個List一對一對組合成tuple,再按順序放在一個list裏面。比如:
# zip.py
name = ('jack' , 'huahua' , 'strange')
age = (2001 , 2002 , 2003)
sex = ('f' , 'm' , 'f')
for n , a , s in zip(name , age , sex) :
print (n , a , s)
它的結構方法有點類似於我們所接觸的dict。當然,當list的長度不一致時,取其中最短的長度。
3.接觸到python的異常處理,其實和c++的差不多。比如這樣一個程序:
# try.py
try :
print ('try')
ans = 10 / 0
print ('answer is ' , ans)
except ZeroDivisionError as e :
print ('ZeroDivisionError:' , e )
finally :
print ('finally')
運行的結果是
try
ZeroDivisionError: division by zero
finally
值得注意的是,這裏有一個finally語句,無論try語句是否成功執行,finally都會執行。區別只是try失敗後,finally語句就是我們最後執行的一個語句。
4.在while和for循環中也有else語句,有趣的是,無論你的loop循環條件達到與否,else語句都會被執行。
# else.py
for i in range(0 , 5):
print (i)
else :
print ('loop is over.')
while False :
x = 1 ;
else :
print ('while loop is over')
比如這樣一個程序,其實兩個else都執行了。那麼else的作用在哪呢?
當loop遇到break結束時,else語句就不會被執行。