列表循環

Python SELF TW
等級 7 , 課堂 6
開放

6.1 for循環

在Python中,循環遍歷列表的元素通常是用for循環來實現的。這是列表迭代中最常用的方法之一,可以讓你對列表中的每個元素執行一段代碼。

for循環的基礎

在Python中,for循環會逐個遍歷列表中的每個元素,並將當前元素的值暫時賦予在for關鍵字後面指定的變量上。例子:


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

可以用切片來實現列表反向遍歷:


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

6.2 帶索引的for循環

除了用傳統的for來遍歷列表,還可以結合range()函數使用for循環來遍歷列表。這不僅允許你處理元素本身,還允許你處理它們的位置,這對於進行更複雜的數據操作時是必需的。

索引迭代的基礎

要以索引訪問來遍歷列表的話,可以使用以下方法:


my_list = ['a', 'b', 'c', 'd']
for i in range(len(my_list)):
    print(f'Index: {i}, Element: {my_list[i]}')

使用索引的好處

在循環中使用索引不僅可以訪問每個元素,還可以就地修改列表中的元素。這在你需要在迭代過程中修改列表的時候特別有用。

例子:


my_list = ['a', 'b', 'c', 'd']
for i in range(len(my_list)):
    my_list[i] = my_list[i] * 2

複雜操作的例子:

用索引很容易實現需要同時訪問幾個列表元素的算法,比如比較當前元素與前一個或下一個元素:

例子:


my_list = [3, 5, 2, 9, 4]
for i in range(1, len(my_list)):
    if my_list[i] > my_list[i - 1]:
        print(f'{my_list[i]} is greater than {my_list[i - 1]}')

6.3 使用enumerate()函數

在Python中,enumerate()函數提供了一個方便的方法可以同時訪問列表中元素及其索引。這尤其有用當你在循環中需要處理元素的索引和值。

enumerate()函數的基礎

enumerate()函數將列表包裝成一個特殊對象並返回一個迭代器,迭代器產生包含索引和值的元組(值對):


my_list = ["apple", "banana", "cherry"]
for index, element in enumerate(my_list):
    print(f'Index: {index}, Element: {element}')

現在你不僅有元素,還有其索引。

enumerate()的好處

使用enumerate()使代碼更可讀,也避免手動用range(len(...))來管理索引。這簡化了諸如修改、訪問列表元素和條件檢查的操作。

例子:

enumerate()非常適合那些需要同時修改列表元素或將元素與其索引進行比較的任務:


my_list = ["apple", "banana", "cherry"]
for index, element in enumerate(my_list):
    if index % 2 == 0:
        print(f'Element {element} at even index {index}')

6.4 while循環

我們講到了for,現在來聊聊while循環。這個循環在處理列表元素時也可以派上用場。

提醒一下,while循環從檢查條件開始。如果條件為真,就執行循環體,然後再次檢查條件。這個過程會持續,直到條件變為假為止。

列表迭代的例子

假設你有一個數字列表,你想一直迭代它直到遇到某個特定的值:


numbers = [1, 2, 3, 4, 5, -1, 6]
i = 0
while i < len(numbers) and numbers[i] != -1:
    print(numbers[i])
    i += 1

看起來和for循環差不多,不是嗎?但是有些情況下,我們不需要用索引來操作列表中的元素。比如說,列表中存儲著一些任務,需要一個個從列表中取出來執行並刪除。

這段代碼可以簡單寫成這樣:


tasks = [1, 2, 3, 4, 5, -1, 6]
while len(tasks) > 0:
    task = tasks.pop()
    print(task)
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION