iT邦幫忙

0

Python loop迴圈 for in / while / nested loop

  • 分享至 

  • xImage
  •  

在 Python 中,迴圈(loop)是一種用來重複執行程式碼區塊的結構。
Python 支援兩種主要的迴圈結構:for 迴圈和 while 迴圈。

for item in sequence
是一種迭代結構,可以遍歷多種資料型態,包括列表(list)、字典(dictionary)、集合(set)和字串(string)等,在序列中的每一個項目上進行操作。

for...in 在各種資料型態的範例:

使用 for...in 列表(list)

fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)
#apple
banana
cherry

使用 for...in 字典(dictionary)

當使用字典進行迴圈時,可以遍歷「鍵」或「鍵值對」。

  • 遍歷字典的鍵(key)
student_scores = {"Alice": 85, "Bob": 90, "Charlie": 78}
for student in student_scores:
    print(student)
#Alice
Bob
Charlie
  • 遍歷字典的「鍵值對」
for student, score in student_scores.items():
    print(f"{student} scored {score}")
#
Alice scored 85
Bob scored 90
Charlie scored 78

使用 for...in 集合 set

集合(set)是一種無序、不重複的資料型態,可以用來存放獨特的值。

unique_numbers = {1, 2, 3, 4, 5}
for number in unique_numbers:
    print(number)
#1
2
3
4
5

使用 for...in string

word = "hello"
for char in word:
    print(char)
#h
e
l
l
o

使用 for...in tuple

coordinates = (10, 20, 30)
for coordinate in coordinates:
    print(coordinate)
#10
20
30

更多 for in 迴圈與 Tuple 解構文章

使用 for...in range()

range() 是一個常用的函數,幫助產生數字序列。

for i in range(5):
    print(i)
    #0 1 2 3 4

更多for...in range() 文章

while 迴圈

while 迴圈會在條件為 True 時反覆執行代碼,直到條件變為 False。

語法:

count = 0
while count < 5:
    print(count)
    count += 1
#0 1 2 3 4

巢狀迴圈(nested loop)

在 Python 中,巢狀迴圈(nested loop)是指「一個迴圈內包含另一個迴圈」的結構。這樣的結構允許我們在一個迴圈內進行多重次的重複執行。巢狀迴圈通常用來操作多維資料,例如表格、矩陣或列表中的列表。

基本巢狀迴圈的結構

巢狀迴圈的格式可以是 for 中再包含 for、while 中包含 while 或兩者交叉使用。這裡以 for 迴圈為例:

for i in range(3):  # 外層迴圈
    for j in range(2):  # 內層迴圈
        print(f"i={i}, j={j}")

輸出:

i=0, j=0
i=0, j=1
i=1, j=0
i=1, j=1
i=2, j=0
i=2, j=1

break 和 continue 是用於控制迴圈流的關鍵字

break 關鍵字

作用: 立即結束迴圈,停止跳出目前所在的迴圈結構,不會執行剩餘的迴圈內容。
使用情境: 當找到所需的結果後,可以用 break 來避免不必要的重複執行,提高程式的效率。
範例:

for num in range(1, 6):
    if num == 3:
        break  # 當 num 等於 3 時,迴圈會停止
    print(num)
#輸出:1 2 當 num 等於 3 時,break 讓迴圈結束,不會執行後面的數字。

continue 關鍵字

作用: 跳過目前迴圈的剩餘內容,直接開始下一輪迴圈。
使用情境: 當滿足某個條件時, 跳過不執行該次的迴圈剩餘內容,繼續執行下一次迴圈。
範例:

for num in range(1, 6):
    if num == 3:
        continue  # 當 num 等於 3 時,跳過該輪迴圈
    print(num)
#輸出:1245 當 num 等於 3 時,continue 讓該輪迴圈直接跳到下一輪,所以 3 沒有被印出來。

break 和 continue 在 while 迴圈的使用

兩者在 while 迴圈中的運作方式與在 for 迴圈中一樣:

count = 0
while count < 5:
    count += 1
    if count == 3:
        continue  # 跳過 count 等於 3 的這一輪
    elif count == 4:
        break     # 當 count 等於 4 時,結束迴圈
    print(count)
#輸出:1 2這裡 continue 略過了 count 等於 3 時的輸出,而 break 則在 count 等於 4 時直接結束迴圈。

pass

為什麼要在迴圈中使用 pass?

  • 佔位符: 當你還沒有決定在某個迴圈迭代中要執行什麼操作時,可以用 pass 來佔位,避免語法錯誤。
  • 跳過某些迭代: 在條件判斷中,如果你想讓程式什麼都不做,直接進入下一次迭代,就可以使用 pass。
for i in range(10):
    if i % 2 == 0:
        pass  # 跳過偶數
    else:
        print(i)

在上面的例子中:

  • 迴圈會迭代 10 次。
  • 當 i 是偶數時,會執行 pass,也就是什麼都不做,直接進入下一次迭代。
  • 當 i 是奇數時,會執行 print(i),打印出 i 的值。

與 break 和 continue 的區別

pass: 跳過當前迭代,繼續執行下一次迭代。
break: 退出整個迴圈。
continue: 跳過當前迭代的剩餘部分,直接進入下一次迭代。

實際應用場景

暫時性跳過: 當你正在開發一個功能,但還沒有完成,可以用 pass 來暫時跳過這部分,讓程式可以繼續執行。
簡化條件判斷: 在某些情況下,使用 pass 可以讓你的條件判斷語句更簡潔。
符合 PEP 8 規範: 在一些情況下,使用 pass 可以讓你的程式碼更符合 PEP 8 規範,提高程式碼的可讀性。

為什麼用 _ 作為變數?

在 Python 中,使用 _ 作為變數名是一個常見的慣例,特別是在以下幾種情況下:

  1. 不需要使用的迭代變數
  • 強調未使用: 當你在 for 迴圈中只關心迭代的過程,而不關心每次迭代的具體值時,用 _ 明確表示這個變數不會被使用。
  • 避免命名衝突: 如果一個變數名在其他地方已經被使用,為了避免命名衝突,可以用 _ 來代替。
# 計算一個列表中的元素個數
numbers = [1, 2, 3, 4, 5]
count = 0
for _ in numbers:
    count += 1
print(count)

在這個例子中,我們只關心計算列表中元素的個數,並不關心每個元素的值,所以用 _ 來表示迭代變數。

  1. 丟棄不需要的返回值
  • 函數返回多個值: 當一個函數返回多個值時,你可以用 _ 來接收那些你不需要的值。
  • 簡化程式碼: 這可以讓你的程式碼更簡潔,更容易閱讀。
# 獲取一個文件的統計資訊
with open('file.txt', 'r') as f:
    for line_num, line in enumerate(f):
        _, word_count = line.split(), 0
        for word in line.split():
            word_count += 1
        print(f"Line {line_num+1}: {word_count} words")

在這個例子中,我們用 _ 來接收 line.split() 返回的列表中的第一個元素(即行號),因為我們只需要字數。

  1. 表示私有變數
    在類中: 在 Python 中,雖然沒有嚴格的私有變數概念,但通常用 _ 開頭的變數名來表示私有變數,提醒其他程式碼不要直接訪問。
class MyClass:
    def __init__(self):
        self._private_var = 42
  1. 表示翻譯的字符串
    在多語言環境: 在一些框架或庫中,_ 可能用於標記需要翻譯的字符串。
    總結
    _ 在 Python 中是一個有特殊意義的變數名。
    它通常用來表示不需要使用的變數、丟棄不需要的返回值、表示私有變數或標記翻譯的字符串。
    使用 _ 可以讓你的程式碼更清晰、更易於理解。
    需要注意的是:

_雖然在很多情況下表示一個臨時變數,但它仍然是一個合法的變數名。
在某些特定的上下文中,_ 可能有其他的含義。
雖然使用 _ 是個好習慣,但過度使用也可能讓程式碼變得晦澀難懂。

建議:

在選擇變數名時,要根據具體的上下文和程式邏輯來決定是否使用 _
如果一個變數確實不需要使用,那麼用_ 來表示是一個不錯的選擇。
希望這個更詳細的解釋能幫助你更好地理解 _在 Python 中的用法。


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言