本篇介紹Python for循環語句和range函數的使用,文中主要討論for循環語句,Python的for循環語句類似於shell或是腳本語言中的foreach循環,可以迭代序列對象。使用range函數可以讓Python的for循環提供類似於傳統的for循環功能。通過本篇的學習,可以達成如下目標。
● 使用for循環語句迭代序列對象
● 掌握range函數的使用方法
Python提供的另外一個循環結構就是for循環語句,Python提供的for循環語句和Java、C++等程式語言提供的for語句不同,Python中的for循環更像是shell或是腳本語言中的foreach循環。它可以遍歷如列表、元組、字符串等序列成員(列表、元組、字符串也稱為序列),也可以用在列表解析和生成器表達式中。
1、 使用序列項迭代序列對象
通過for循環可以迭代序列對象的所有成員,並在迭代結束後,自動結束循環,其語法如下:
for iter_var in list:
語句塊;
其中,iter_var是迭代變量,指向序列對象的元素,list是可迭代對象。語句塊是循環體,在循環體中可以使用iter_var訪問可迭代對象的元素。
例1:使用Pyhton列表建立一個同學花名冊,使用for循環迭代輸出花名冊內容。
程序初始化一個Python列表,列表中存儲姓名,然後使用for循環語句遍歷Python列表,獲取列表中的每個元素並輸出。程序流程圖如下:
流程圖用到了for循環控制,迭代花名冊列表,並輸出列表元素,迭代結束後自動退出循環,程序結束。
下面根據圖1所示的流程圖給出例1程序代碼。
在for語句的每次循環中,item變量被設置為student列表的當前元素,被print語句使用。
當用for循環迭代字符串時,迭代變量只會包含單個字符。遍歷字符串序列的功能並不常用,在字符串裡查找字符時,更常用的是用in操作符來判斷一個子串或單個字符是否屬於某個字符串。
例2:輸出一個字符串的所有字母序列。
程序初始化一個字符串,然後使用for循環語句遍歷這個字符串,獲取字符串中的單個字符,並用print語句輸出。流程圖與列1相似,這裡不再繪製流程圖。程序代碼如下:
例2輸出結果如下圖所示。
2、 使用序列索引迭代序列對象
例1中使用序列項迭代列表對象,for循環中的in子句會判斷當前序列項是否在序列中,如果屬於列表則繼續循環,否則退出循環。在for循環語句中,也可以使用序列索引來迭代列表。使用序列索引迭代序列對象的語法如下:
for index in range(len(list)):
語句塊;
其中,index為序列的索引項,range是一個計數函數,後面會詳解解釋,len獲取序列對象的長度。
例1使用序列索引遍歷列表代碼如下:
使用range函數可以得到用來迭代index的索引數列表,使用序列對象的訪問運算符「[]」,就可以訪問對應的序列對象。
3、使用枚舉函數迭代序列對象
枚舉函數enumerate()用於將序列對象轉換為一個索引序列,並返回序列對象的索引和成員,一般在for循環中得到序列對象的索引計數和序列對象成員。使用枚舉函數迭代序列對象的語法如下:
for index, iter_var in enumerate (list,start_index=0):
語句塊;
其中,index為enumerate返回的索引計數,iter_var為與索引計數對應的序列對象成員,list為待遍歷的序列對象,start_index為返回的起始索引計數,起始索引計數默認為0。
例1使用枚舉函數遍歷列表代碼如下:
使用enumerate函數獲取student的索引計數,索引計數從0開始,也可以指定起始索引計數。
索引計數從2開始,輸出結果如下圖所示。
4、 關於range函數
前面介紹的for循環是一種迭代的循環機制,和Java、C++等傳統程式語言的for循環有所不同。那麼,Python能不能提供類似於傳統的for循環功能呢?實現循環從一個數字開始計數到另一個數字,一旦到達最後的數字或者某個條件不再滿足就立刻退出循環。
Python提供的range函數可以讓for循環實現上面的功能,可以讓for循環從0到10計數,或者從10到100每次遞增5。range函數的語法如下:
range(start, end, step=1)
range會返回一個整數序列,statr為整數序列的起始值,end為整數序列的結束值,在生成的整數序列中,不包含結束值。step為整數序列中遞增的步長,默認為1。
例如:
輸出結果如下圖所示。
range(0,5)生成包含0、1、2、3、4的整數序列,Python會把生成的這個整數序列用於for循環語句,循環從0到5,不包括5,步長為1,循環次數為5。
range(10,30,5)生成包含10、15、20、25的整數序列,循環從10到25,不包括30,步長為5,循環次數為4。可以看出,當range用於for循環時,循環次數取決於range返回的整數序列的長度,每次循環的索引計數為整數序列的值。
例3:使用for循環求自然數的階乘。
自然數的階乘是所有小於及等於該自然數的積,求自然數k的階乘,就是從1開始順序乘以小於等於k的所有自然數,也包括k。程序可以通過range函數返回小於所求自然數的整數序列,然後迭代range函數返回的整數序列。程序代碼如下:
課程小結
(1)Python提供的for循環語句和Java、C++等程式語言提供的for語句不同,Python中的for更像是shell或是腳本語言中的foreach循環。它可以遍歷如列表、元組、字符串等序列成員(列表、元組、字符串也稱為序列),也可以用在列表解析和生成器表達式中。
(2)Pyhton的for循環應用range函數可以實現傳統的for循環功能,實現循環從一個數字開始計數到另一個數字,一旦到達最後的數字或者某個條件不再滿足就立刻退出循環。