python_學習筆記0816

今天是二零一伍年八月十六日

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語句就不會被執行。


發佈了35 篇原創文章 · 獲贊 2 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章