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
90會員
425內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Array可以說是各種語言除了基本型別之外,最常用的資料型別與容器之一了。 Array 這種連續格子狀的資料結構,在Python要怎麼表達呢? 建立一個空的陣列 最簡單也最直接的寫法就是 array = [] # Python list [] 就對應到大家熟知的array 陣列型態的資料結
Array可以說是各種語言除了基本型別之外,最常用的資料型別與容器之一了。 Array 這種連續格子狀的資料結構,在Python要怎麼表達呢? 建立一個空的陣列 最簡單也最直接的寫法就是 array = [] # Python list [] 就對應到大家熟知的array 陣列型態的資料結
你可能也想看
Google News 追蹤
Thumbnail
在寫程式時,重複執行指令是常見需求。Python 提供了兩種迴圈結構:for-in 迴圈和 while 迴圈。for-in 迴圈適合已知迴圈次數或進行容器迭代;while 迴圈則用於不確定迴圈次數的情境。本文將介紹這兩種迴圈的基本用法及練習範例。
Thumbnail
這篇內容,將會講解什麼是「for迴圈」,以及與「for迴圈」相關的知識。包括for迴圈的簡介、for迴圈、break、continue。
Thumbnail
for loop、while loop、repeat
Thumbnail
本文介紹了Python中的流程控制,包括if, elif, else語句,三元運算子,for和while迴圈,以及控制迴圈語句如break、continue和pass。透過範例程式碼,說明了如何使用這些語句和結構進行條件判斷,迴圈遍歷和控制程式流程。
Thumbnail
Python語法包括條件語句、迴圈、函數和變數的使用。條件語句如if、elif和else用於進行條件判斷,for和while是兩種主要的迴圈,def用於定義函數。變數可以被賦予數字或字符串,並可使用類型提示來指定變數的類型。註解可以是單行或多行,並可用於解釋函數或類的用途和作用。
※ 迴圈(for loop)介紹: 迴圈的用途是重複執行程式碼,只要條件滿足,就會執行特定的動作。 for (let i = 0; i < 10; i = i + 1) { console.log(i); } 說明: for:對於。 let:因為迭代器的數值會一直改變所以要用let
Thumbnail
有別於上一篇for迴圈[Python基礎]流程控制for迴圈,while迴圈則常常被說是無限迴圈,若未到達跳脫的條件,是不會停止的。 在日常生活中,我們也常常用到這個概念,例如泡奶粉,要一直攪拌到粉都溶解了為止,其中的一直跟為止就等於while迴圈概念一樣,一直做到某個條件滿足了被觸發才停止。
Thumbnail
在日常中,常有重複性相當高的事情,不斷地重複在做,重複的事做久就會慢慢變成是一個習慣,這個習慣就會讓人下意識地完成一些事情。 習慣是一種自動化的行為模式,這些行為模式在重複進行的過程中變得固定且容易自動化。 在Python程式語言中,for迴圈就類似這種概念
Thumbnail
for,while,do while語法介紹 for loop for比較偏向固定圈數型的迴圈 語法 for(計數變數初值; 布林運算式 ; 增量運算) { : 一般指令; : }
Thumbnail
在寫程式時,重複執行指令是常見需求。Python 提供了兩種迴圈結構:for-in 迴圈和 while 迴圈。for-in 迴圈適合已知迴圈次數或進行容器迭代;while 迴圈則用於不確定迴圈次數的情境。本文將介紹這兩種迴圈的基本用法及練習範例。
Thumbnail
這篇內容,將會講解什麼是「for迴圈」,以及與「for迴圈」相關的知識。包括for迴圈的簡介、for迴圈、break、continue。
Thumbnail
for loop、while loop、repeat
Thumbnail
本文介紹了Python中的流程控制,包括if, elif, else語句,三元運算子,for和while迴圈,以及控制迴圈語句如break、continue和pass。透過範例程式碼,說明了如何使用這些語句和結構進行條件判斷,迴圈遍歷和控制程式流程。
Thumbnail
Python語法包括條件語句、迴圈、函數和變數的使用。條件語句如if、elif和else用於進行條件判斷,for和while是兩種主要的迴圈,def用於定義函數。變數可以被賦予數字或字符串,並可使用類型提示來指定變數的類型。註解可以是單行或多行,並可用於解釋函數或類的用途和作用。
※ 迴圈(for loop)介紹: 迴圈的用途是重複執行程式碼,只要條件滿足,就會執行特定的動作。 for (let i = 0; i < 10; i = i + 1) { console.log(i); } 說明: for:對於。 let:因為迭代器的數值會一直改變所以要用let
Thumbnail
有別於上一篇for迴圈[Python基礎]流程控制for迴圈,while迴圈則常常被說是無限迴圈,若未到達跳脫的條件,是不會停止的。 在日常生活中,我們也常常用到這個概念,例如泡奶粉,要一直攪拌到粉都溶解了為止,其中的一直跟為止就等於while迴圈概念一樣,一直做到某個條件滿足了被觸發才停止。
Thumbnail
在日常中,常有重複性相當高的事情,不斷地重複在做,重複的事做久就會慢慢變成是一個習慣,這個習慣就會讓人下意識地完成一些事情。 習慣是一種自動化的行為模式,這些行為模式在重複進行的過程中變得固定且容易自動化。 在Python程式語言中,for迴圈就類似這種概念
Thumbnail
for,while,do while語法介紹 for loop for比較偏向固定圈數型的迴圈 語法 for(計數變數初值; 布林運算式 ; 增量運算) { : 一般指令; : }