Python的range函數與for循環語句

2021-01-11 米粒教育

本篇介紹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列表,獲取列表中的每個元素並輸出。程序流程圖如下:

圖1 例1流程圖

流程圖用到了for循環控制,迭代花名冊列表,並輸出列表元素,迭代結束後自動退出循環,程序結束。

下面根據圖1所示的流程圖給出例1程序代碼。

在for語句的每次循環中,item變量被設置為student列表的當前元素,被print語句使用。

例1輸出結果如下圖所示。

當用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循環功能,實現循環從一個數字開始計數到另一個數字,一旦到達最後的數字或者某個條件不再滿足就立刻退出循環。

相關焦點

  • Python入門第7課,循環結構學習,for語句range函數的3種用法
    第1課,輸出語句及賦值語句。第2課,輸入語句學習。第3課、第4課,學習條件控制if語句。第5課、第6課,階段練習及講解。本節課開始,大陳將帶領學生們一起學習循環語句,計劃用4節課的時間學習for、while語句的使用,同時複習和強化訓練前面學習的變量、賦值、輸入輸出、條件控制等內容。
  • python循環控制語句
    循環語句語句後面一定要跟:冒號for循環:1.for…in range()遍歷格式:for i in range(5);或者for i in range( 0,10,3 );格式中的1列印i是從0開始後列印到5結束
  • 零基礎學編程python第十課,for……in循環語句與while循環語句
    而計算機機器人,就可以通過【循環】,一遍又一遍不厭其煩的向客戶介紹產品,計算機又不怕累。現在,是不是感覺」循環」不一樣了。什麼計算機就特別擅長做重複性工作呢? 並且是」擅長、速度快、不怕累」。究其原理, 就是因為代碼中的【循環語句】,讓計算機能夠重複、自動地執行命令。Python江湖裡,提供了兩種循環語句, for…in循環語句與while循環語句。
  • python循環語句用數據做判斷:布爾值和布爾運算
    python循環語句用數據做判斷:布爾值和布爾運算更深入的學習循環語句的用法:用數據做判斷:布爾值 和 布爾運算之前我們提到,計算機利用數據有三種方式:1.直接使用數據,2.計算和加工數據,3.用數據做判斷。
  • 少兒編程Python第4課-for循環語句(質數判斷)
    因此,我們還需要了解一下循環結構,有了循環結構我們就可以輕鬆的控制某件事或者某些事重複、重複、再重複的去執行。Python 中的循環語句有 2 種,上一課我們已經對 while 做了詳細的講解,本節給大家介紹 for 循環,它常用於遍歷字符串、列表、元組、字典、集合等序列類型,逐個獲取序列中的各個元素。
  • Python語言基本語法元素之語句,表達式、賦值語句
    例如要真正理解 指數增長 的意思,先要知道什麼是指數函數、什麼是函數曲線。在看到指數函數的曲線的時候,你才能理解 指數增長 增長的迅猛程度。今天筆者想寫Python語言基本語法元素中的語句語句如圖,程序代碼就是一行行語句。語句,簡單粗糙的理解就是一個句子。在中文,語句就是以句號為分界的句子。在程式語言中,語句,就是擁有完整意義的代碼結構。
  • python入門基礎之lambda匿名函數詳解
    python入門基礎之lambda匿名函數詳解剛開始學習python的時候很多人可能對於lambda函數不了解,感覺和def很混亂,下面我來介紹一下lambda函數我從一下幾個方面來介紹lambda:lambda作為一個表達式,定義了一個匿名函數,上例的代碼x,y為入口參數,x+y為函數體。在這裡lambda簡化了函數定義的書寫形式。python允許用lambda關鍵字創造匿名函數。匿名是不需要以標準的方式來聲明,比如說使用 def 語句。(除非賦值給一個局部變量,這樣的對象也不會在任何的名字空間內創建名字,上面的例子中會創建名字。)
  • python邏輯控制總結——斐波那契數列
    運行結果1python whilepython中,通過while可以創建一個循環。嘗試運行,你會發現控制臺不斷輸出1,並且,會感覺到電腦卡頓,這是因為循環在不斷佔用系統資源造成的。所以,在寫代碼時,除特殊用途外,要特別注意不要寫成死循環,死循環會導致程序卡死,內存溢出等。python中while還可以和一個else語句塊結合使用,條件判斷為True,執行循環體中的內容,條件判斷為False,執行else中的內容。
  • Python3中的生成器函數
    下面介紹的函數生成器就是這種工具之一。 1:生成器函數的定義 定義:使用常規的def語句進行編寫,但是使用yield語句一次返回一個結果集,在每次結果產生之間掛起和恢復它們的狀態。
  • Python3.7知其然知其所以然-第十章 for循環
    for循環可以遍歷任何序列的元素,如逐個輸出字符串、列表、字典或元組等中的元素。它是一種迭代循環機制。通俗點說,就是把這個循環中的第一個元素到最後一個元素依次訪問一次,並把訪問到的元素供執行語句使用。for c in s:print(c)10.2 range()函數可以使用內置range()函數,生成數列,並通過for循環取出元素。range(start,end,step=1)顧頭不顧尾。
  • python迭代器和生成器總結——新的斐波那契數列
    給定一個集合,循環對集合中的每個元素應用某個操作,稱之為迭代。python迭代器題目:給定一個序列,循環輸出序列中的每個元素。通過一個for循環就可以實現,如下:for循環遍歷結果事實上,python中,提供了另一個工具來幫助遍歷,該工具稱之為迭代器。可以通過iter函數來獲取一個迭代器,通過next函數來獲取下一個元素。如下:
  • python while循環、數據類型
    1.方法1、嵌套將一系列字典存儲在列表中,或將列表作為值存儲在字典中,這成為嵌套2、range(數字)返回一系列數字,設定循環多少次3、append()末尾添加4、items()以列表的形式返回可遍歷的(鍵值)元組數值。
  • Python程式設計師最常犯的10個錯誤,你中招了嗎?
    pass...Traceback (most recent call last):File "<stdin>", line 3, in <module>IndexError: list index out of range這裡的問題是except語句不接受以這種方式指定的異常列表。
  • python基礎課程 第5章 奇妙的內建函數
    今天我們來講講 python 的常用內建函數,以便於大家在日常編程過程中遇到類似的場景可以直接拿來使用,不用再重複自己了。python 內建函數(python自帶的函數) 數量加起來大概有70多個,今天我們主要講常用的一些,至於更多的內容可以在以後的基礎教程裡慢慢學到。
  • python高階函數:map、filter、reduce的替代品
    什麼是高階函數?高階函數是一種將函數作為參數,或者把函數作為結果返回的函數,map函數、sorted函數就是高階函數的典型例子。map函數在小編以前的文章中做過相應的知識分享。sorted函數是python的內置函數,它的可選參數key用於提供一個函數,它可以將函數應用到各個元素上進行排序。
  • Python while循環語句的使用
    本篇介紹Python循環語句的使用,文中主要討論while循環語句,使用while循環語句可以解決程序中需要重複執行的操作,本文講解的每個案例中都配有流程圖和代碼說明。通過本篇的學習,可以達成如下目標。
  • python隨機模塊22個函數詳解(上)
    作者:小伍哥來源: AI入門學習今天給大家介紹下python中的隨機模塊,隨機數可以用於數學,遊戲,安全等領域中,還經常被嵌入到算法中,用以提高算法效率,並提高程序的安全性。平時數據分析各種分布的數據構造也會用到。
  • python字符串、列表內的方法使用
    python類型int:bit_lenth()bool:True Falsestr: str --->bool :bool(str): ''--->Falsestr例如:s = 'alexsb's1 = s[1]s2 = s[1:3]s3 = s[0:] s[
  • Python新手入門最容易犯的錯誤匯總
    10)在 for循環語句中忘記調用 len()(導致「TypeError: 『list』 object cannot be interpreted as an integer」)通常你想要通過索引來迭代一個
  • Python基礎教程(一) - 函數和函數式編程
    前面使用過很多print()來進行列印,這是python提供的內建函數,你也可以自己創建函數,這叫做用戶自定義函數。創建函數你可以定義一個由自己想要功能的函數,用def語句來創建,標題行由def關鍵字,函數的名字,以及參數的集合(如果有的話)組成。