Python 的 for ... loop 迴圈迭代語法

更新於 發佈於 閱讀時間約 7 分鐘

在循環式的流程控制中,最常用的就是for loop 或是 while loop 語法了。

最常見的場景就是根據條件判斷式,重複執行特定的指令。

如果要在python寫出類似C/C++ for loop,可以怎麼寫呢?


透過索引去進行迭代

for var in range( start=0, stop, step=1 ):


var 代表迴圈變數,對應到虛擬碼或者程式碼中的i, j, k, ...等等

range 是代表區間的起始位置,和每次迭代的前進步伐

start 起點默認是0, step 前進步伐默認是+1

stop終點需要使用者明確指定


另外,要特別注意的是, python 的區間通常都是包含起點,不包含終點


範例,如果我們要印出0~9中的整數,可以這樣寫

for i in range(0, 10, 1):
print(i, end=", ")

對應的輸出就是

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 

如同剛剛提到的,start 默認是0, step 默認是+1,所以可以省略。

在range裡面指定終點stop即可

for i in range(10):
print(i, end=", ")

對應的輸出同樣是

0, 1, 2, 3, 4, 5, 6, 7, 8, 9,


再舉一個進階一點的例子,如果要印出0~10中的偶數,可以這樣寫

for i in range(0, 11, +2):
print(i, end=", ")

要特別注意,由於range區間不包含終點,所以終點記得寫下一個比較大的數字11

對應的輸出就是

0, 2, 4, 6, 8, 10, 


另外是一個類似的例子,如果要印出0~10中的奇數,可以這樣寫

for i in range(1, 11, +2):
print(i, end=", ")

對應的輸出就是

1, 3, 5, 7, 9, 


透過索引去拜訪序列元素

例如,透過索引去拜訪陣列元素可以這樣寫

arr = [100, 200, 300, 400, 500]

for i in range( len(arr) ):
print( arr[i], end=', ')

對應的輸出就是

100, 200, 300, 400, 500, 

透過元素去進行迭代

for var in iterable可迭代對象:


另一個比較方便的形式,就是直接迭代一個序列依序拜訪每個元素

像是string字串、list列表、tuple元祖...等等這些都是可迭代對象


如果要依序印出字串中的每個字元,可以這樣寫

s = "Hello world"

for char in s:
print(char, end=", ")

對應的輸出就是

H, e, l, l, o,  , w, o, r, l, d, 


唯一要特別注意的是,這邊的char相當於一個read only的變數,僅供輸出,
如果修改char對於原本的序列是不會產生任何作用

s = "Hello world"

for char in s:
# 轉大寫
char = char.upper()
print(char, end=", ")

print(f"\n s still unchange: {s}")

對應的輸出就是

H, E, L, L, O,  , W, O, R, L, D, 
s still unchange: Hello world


如果,要依序印出陣列中的每個元素,可以這樣寫

arr = [100, 200, 300, 400, 500]

for num in arr:
print(num, end=", ")

對應的輸出就是

100, 200, 300, 400, 500, 


同樣的道理,這邊的num相當於一個read only的變數,僅供輸出,

如果修改num對於原本的序列是不會產生任何作用

arr = [100, 200, 300, 400, 500]

for num in arr:
num = num + 50
print(num, end=", ")

print(f"\n arr still unchange: {arr}")

對應的輸出就是

150, 250, 350, 450, 550, 
arr still unchange: [100, 200, 300, 400, 500]

如果同時想取得索引index和元素element,可以嗎?

可以喔!

同時透過索引和元素去迭代

for index, elem in enumerate(iterable可迭代對象):


python提供進階的enumerate枚舉語法,可以返回索引index和元素element。

提供使用者更便捷的迭代語法。


index代表迭代的索引值,沒有特別指定的話,默認從0開始數

elem代表迭代的元素


要依序印出陣列中的每個索引元素,可以這樣寫

arr = [100, 200, 300, 400, 500]

for idx, elem in enumerate(arr):
print(f"index = {idx}, element = {elem}")

對應的輸出就是

index = 0, element = 100
index = 1, element = 200
index = 2, element = 300
index = 3, element = 400
index = 4, element = 500


比較特殊的是,enumerate允許使用者指定索引編號的起點

例如,我們想要index從一開始數,這樣比較直覺,也貼近人的習慣和觀點。


依序印出陣列中的每個索引元素索引從1開始數,可以這樣寫

arr = [100, 200, 300, 400, 500]

for idx, elem in enumerate(arr, 1):
print(f"index = {idx}, element = {elem}")


對應的輸出就是

index = 1, element = 100
index = 2, element = 200
index = 3, element = 300
index = 4, element = 400
index = 5, element = 500


到這邊已經學會基本與常用的python for ... loop 語法!

語法很簡潔也很直覺,對吧!

有空記得和array陣列操作一起複習喔,效果加倍

Python 陣列 與 List comprehension 列表推導式 | 小松鼠的演算法樂園 (vocus.cc)


Reference

[1] 4. More Control Flow Tools — Python 3.12.4 documentation

留言
avatar-img
留言分享你的想法!
小松鼠-avatar-img
發文者
2024/08/07
林燃(創作小說家) 姊姊太強了,進化到動態貼圖🍧🍧🍧
小松鼠-avatar-img
發文者
2024/08/13
動手學python 的引言與目錄提及了這篇文章,趕快過去看看吧!
avatar-img
小松鼠的演算法樂園
95會員
427內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
2024/10/10
從Python 內建deque資料結構的角度切入, 同時了解deque 與 FIFO Queue相關的function用法。 collections.deque是一種兩端點皆可進出的雙端佇列 在兩端點高效地在O(1)常數時間內添加和刪除元素。 這使得deque非常適合實現FIFO Queue
Thumbnail
2024/10/10
從Python 內建deque資料結構的角度切入, 同時了解deque 與 FIFO Queue相關的function用法。 collections.deque是一種兩端點皆可進出的雙端佇列 在兩端點高效地在O(1)常數時間內添加和刪除元素。 這使得deque非常適合實現FIFO Queue
Thumbnail
2024/09/27
井字遊戲(OOXX)的遊戲描述 Tic Tac Toe(井字遊戲)是經典的雙人棋盤遊戲,在一個3x3的方格中進行。 每回合兩個玩家輪流選一個位置,先讓自己的符號(是 X 或 O)在 水平線、垂直線或對角線上連成一線的玩家宣告獲勝。
Thumbnail
2024/09/27
井字遊戲(OOXX)的遊戲描述 Tic Tac Toe(井字遊戲)是經典的雙人棋盤遊戲,在一個3x3的方格中進行。 每回合兩個玩家輪流選一個位置,先讓自己的符號(是 X 或 O)在 水平線、垂直線或對角線上連成一線的玩家宣告獲勝。
Thumbnail
2024/09/23
深入探討圖(Graph)的基本概念 及 最短路徑Shortest Path的尋找。 我們專注於廣度優先搜尋(BFS)演算法,以等權圖的最短路徑為例, 詳細說明如何利用BFS從起點擴散到終點,並且提供詳細的程式碼範例。 透過實作,讀者能夠更清楚理解圖論及BFS的應用,並體會水波紋擴散模型的重要性。
Thumbnail
2024/09/23
深入探討圖(Graph)的基本概念 及 最短路徑Shortest Path的尋找。 我們專注於廣度優先搜尋(BFS)演算法,以等權圖的最短路徑為例, 詳細說明如何利用BFS從起點擴散到終點,並且提供詳細的程式碼範例。 透過實作,讀者能夠更清楚理解圖論及BFS的應用,並體會水波紋擴散模型的重要性。
Thumbnail
看更多
你可能也想看
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
在流程控制中,最常用的就是for loop 或是 while loop 語法了。 最常見的場景就是根據條件判斷式,重複執行特定的指令。 如果要在python寫出類似C/C++ for loop,可以怎麼寫呢? 透過索引去進行迭代 for var in range( start=0, sto
Thumbnail
在流程控制中,最常用的就是for loop 或是 while loop 語法了。 最常見的場景就是根據條件判斷式,重複執行特定的指令。 如果要在python寫出類似C/C++ for loop,可以怎麼寫呢? 透過索引去進行迭代 for var in range( start=0, sto
Thumbnail
for 和 while 迴圈,回圈觀念就是重複,想像自己是一位跑者,需要繞操場十圈才能抵達終點,這十圈在同一個操場上奔跑,這個概念轉換回來解釋程式的回圈就是一直做重複的事情。 for 迴圈是 Python 中的一個迴圈控制結構,用於對集合(例如清單、字串、元組等)中的每個元素進行迭代操作
Thumbnail
for 和 while 迴圈,回圈觀念就是重複,想像自己是一位跑者,需要繞操場十圈才能抵達終點,這十圈在同一個操場上奔跑,這個概念轉換回來解釋程式的回圈就是一直做重複的事情。 for 迴圈是 Python 中的一個迴圈控制結構,用於對集合(例如清單、字串、元組等)中的每個元素進行迭代操作
Thumbnail
我們探討了while迴圈的使用,不同於for迴圈,while迴圈以條件式判斷為基礎,而非限定重複次數。我們介紹了使用break語句強制結束迴圈,以及使用continue語句跳過特定程式碼並返回迴圈開頭,同時,我們提及了無窮迴圈的概念,強調了在迴圈中必須更改迴圈變數的值,以避免無窮迴圈的發生。
Thumbnail
我們探討了while迴圈的使用,不同於for迴圈,while迴圈以條件式判斷為基礎,而非限定重複次數。我們介紹了使用break語句強制結束迴圈,以及使用continue語句跳過特定程式碼並返回迴圈開頭,同時,我們提及了無窮迴圈的概念,強調了在迴圈中必須更改迴圈變數的值,以避免無窮迴圈的發生。
Thumbnail
迴圈對象可以是列表或範圍,透過定義重複動作的內容,我們可以在迴圈中執行指定次數的操作。利用range函數,我們可以自訂重複執行的次數。同時,我們也介紹了break和continue的使用,以及巢狀迴圈的特性。
Thumbnail
迴圈對象可以是列表或範圍,透過定義重複動作的內容,我們可以在迴圈中執行指定次數的操作。利用range函數,我們可以自訂重複執行的次數。同時,我們也介紹了break和continue的使用,以及巢狀迴圈的特性。
Thumbnail
C# 迴圈(C# 教學) – for loop 可以說是程序編寫的基本功. 運用LOOPING可以減少程式碼, 只需透過for內的BLOCK, 就可把程式碼重用, 避免要不停把程序碼重覆. 以下我會介紹迴圈的結構, 運行方式, 如何離開迴圈, 以及迴圈的種類. 2) 迴圈的種類 3) 迴圈的用法
Thumbnail
C# 迴圈(C# 教學) – for loop 可以說是程序編寫的基本功. 運用LOOPING可以減少程式碼, 只需透過for內的BLOCK, 就可把程式碼重用, 避免要不停把程序碼重覆. 以下我會介紹迴圈的結構, 運行方式, 如何離開迴圈, 以及迴圈的種類. 2) 迴圈的種類 3) 迴圈的用法
Thumbnail
另一種迴圈的形式是while迴圈,和for迴圈常常可以達到相同的功能,差別在於for迴圈是在一定的範圍內迭代,例如從1到100,或是串列裡的每一個元素;而while迴圈是一個條件判斷的迴圈,當滿足這個條件就執行迴圈的內容,不滿足時就跳出迴圈。
Thumbnail
另一種迴圈的形式是while迴圈,和for迴圈常常可以達到相同的功能,差別在於for迴圈是在一定的範圍內迭代,例如從1到100,或是串列裡的每一個元素;而while迴圈是一個條件判斷的迴圈,當滿足這個條件就執行迴圈的內容,不滿足時就跳出迴圈。
Thumbnail
目前為止,我們學到了基本的for迴圈,也就是僅對一個可迭代物件進行迭代。當一個迴圈裡面還有另一個迴圈,這時就形成了巢狀迴圈,最基本的例子就是九九乘法表,每個被乘數都對應到9個乘數,當被乘數和9個乘數都計算完了之後,才換下一個被乘數,不斷迴圈直到每個被乘數和乘數都計算過。另個for迴圈的應用是將串列和
Thumbnail
目前為止,我們學到了基本的for迴圈,也就是僅對一個可迭代物件進行迭代。當一個迴圈裡面還有另一個迴圈,這時就形成了巢狀迴圈,最基本的例子就是九九乘法表,每個被乘數都對應到9個乘數,當被乘數和9個乘數都計算完了之後,才換下一個被乘數,不斷迴圈直到每個被乘數和乘數都計算過。另個for迴圈的應用是將串列和
Thumbnail
當我們需要重複一系列有規則的行為,例如從1加到100,或是取得物件裡面的每一個元素,例如將串列裡面的每個元素印出,重複地撰寫程式碼顯然不切實際,for迴圈便是可以讓程式對可迭代物件(iterable object)執行迭代(iteration)的工具。
Thumbnail
當我們需要重複一系列有規則的行為,例如從1加到100,或是取得物件裡面的每一個元素,例如將串列裡面的每個元素印出,重複地撰寫程式碼顯然不切實際,for迴圈便是可以讓程式對可迭代物件(iterable object)執行迭代(iteration)的工具。
Thumbnail
  寫程式最重要的目標就是讓重複的工作交給電腦去執行,解放雙手和精力去做重複的事情,今天要介紹的迴圈就是可以讓電腦重複執行程式直到條件結束的方式。
Thumbnail
  寫程式最重要的目標就是讓重複的工作交給電腦去執行,解放雙手和精力去做重複的事情,今天要介紹的迴圈就是可以讓電腦重複執行程式直到條件結束的方式。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News