[Python基礎]for迴圈運用zip,enumerate函式

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

在使用for迴圈時,都想著如何把列表的索引也跟著取出來標記檔案編號,是不是也有一種函式可以辦得到呢?~ 有那就是enumerate

有時候也想一次做兩件事情,同時左手拿肉吃,右手拿酒喝,在Python中也有類似的作法就是for迴圈應用zip的方法,就能一次處理兩個列表。

本文將介紹zipenumerate函式的應用,用程式範例來解析使用的好處。

語法說明

enumerate 函數:

enumerate(iterable, start=0)
  • iterable: 要迭代的可迭代對象,如列表、元組、字典等。
  • start(可選): 起始索引值,預設為 0。

enumerate 函數同樣用於遍歷可迭代對象,但它同時提供了元素的索引。

它返回一個產生元組的迭代器,其中每個元組的第一個元素是索引,第二個元素是原始可迭代對象的值。


程式範例

用於List的索引與元素:

names = ['Alice', 'Bob', 'Charlie']

# 使用 enumerate 遍歷列表並獲取索引和元素
for index, name in enumerate(names):
print(f"Index: {index}, Name: {name}")
# 輸出:
# Index: 0, Name: Alice
# Index: 1, Name: Bob
# Index: 2, Name: Charlie
raw-image

用於dit字典:

grades = {'Alice': 90, 'Bob': 75, 'Charlie': 88}

# 使用 enumerate 遍歷字典並獲取鍵和值
for index, (name, score) in enumerate(grades.items()):
print(f"Index: {index}, Name: {name}, Score: {score}")
# 輸出:
# Index: 0, Name: Alice, Score: 90
# Index: 1, Name: Bob, Score: 75
# Index: 2, Name: Charlie, Score: 88

enumerate 是在迭代中獲取索引和元素值時的一個實用工具,尤其是當你需要追蹤元素的位置時。


zip 函數:

zip 函數接受一個或多個可迭代對象(如列表、元組等),將對應的元素打包成元組的序列。這可以用於同時遍歷多個可迭代對象。

語法:

zip(iterable1, iterable2, ...)

iterable1, iterable2, ...:要打包的可迭代對象,可以是多個。

在這個例子中,zipnamesages 兩個可迭代對象的對應元素打包成元組的序列。

names = ['Alice', 'Bob', 'Charlie']
ages = [25, 30, 35]

# 使用 zip 將兩個可迭代對象打包
zipped_data = zip(names, ages)

# 將結果轉換為列表
result_list = list(zipped_data)

print(result_list)
# 輸出: [('Alice', 25), ('Bob', 30), ('Charlie', 35)]

範例(創建字典):

keys = ['name', 'age', 'city']
values = ['Alice', 25, 'New York']

# 使用 zip 創建字典
person_dict = dict(zip(keys, values))

print(person_dict)
# 輸出: {'name': 'Alice', 'age': 25, 'city': 'New York'}

使用 for 迴圈搭配 zip 有以下好處:

  1. 同時迭代多個可迭代對象: zip 允許你同時迭代多個可迭代對象,這樣你可以在同一個迴圈中訪問相應位置的元素,使得程式碼更簡潔。
  2. 可讀性: 使用 zip 可以提高程式碼的可讀性,因為它明確地表示你正在處理多個對應的元素,而不需要使用索引值。
  3. 避免使用索引: 不使用索引值可以減少錯誤的可能性,因為你不需要擔心迭代的範圍或確保兩個可迭代對象具有相同的長度。
  4. 應對不同長度的可迭代對象: 如果 zip 的可迭代對象長度不同,它將以最短的長度為基準。這使得在處理不同數據結構時更靈活。

程式範例

同時迭代多個列表:

names = ['Alice', 'Bob', 'Charlie']
ages = [25, 30, 35]
scores = [90, 85, 88]

# 使用 zip 遍歷三個可迭代對象
for name, age, score in zip(names, ages, scores):
print(f"Name: {name}, Age: {age}, Score: {score}")
# 輸出:
# Name: Alice, Age: 25, Score: 90
# Name: Bob, Age: 30, Score: 85
# Name: Charlie, Age: 35, Score: 88

同時迭代多個字典:

person1 = {'name': 'Alice', 'age': 25, 'city': 'New York'}
person2 = {'name': 'Bob', 'age': 30, 'city': 'San Francisco'}

# 使用 zip 同時迭代多個字典的鍵和值
for (key1, value1), (key2, value2) in zip(person1.items(), person2.items()):
print(f"Person 1 - {key1}: {value1}, Person 2 - {key2}: {value2}")
# 輸出:
# Person 1 - name: Alice, Person 2 - name: Bob
# Person 1 - age: 25, Person 2 - age: 30
# Person 1 - city: New York, Person 2 - city: San Francisco

zip 還可以應用在不同情境中,包括交換矩陣的行與列字典的鍵值對調等

交換矩陣的行與列:

zip(*matrix) 將矩陣的行與列交換,然後使用列表解析將其轉換為新的矩陣。

matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]

# 使用 zip(*matrix) 交換矩陣的行與列
transposed_matrix = [list(row) for row in zip(*matrix)]

for row in transposed_matrix:
print(row)
# 輸出:
# [1, 4, 7]
# [2, 5, 8]
# [3, 6, 9]

這裡的 zip(*matrix) 實際上就是zip(matrix[0], matrix[1], matrix[2]),將矩陣中的每一行當作參數傳給zip函式。

zip 函數將每一行的對應位置的元素打包成一個元組。接著,使用列表生成式 [list(row) for row in ...] 將這些元組轉換為列表,最終得到轉置後的矩陣 transposed_matrix

字典的鍵值對調:

在這個例子中,zip(original_dict.values(), original_dict.keys()) 將字典的鍵和值打包成元組,然後使用 dict() 創建新的字典。

original_dict = {'a': 1, 'b': 2, 'c': 3}

# 使用 zip 將字典的鍵和值對調
swapped_dict = dict(zip(original_dict.values(), original_dict.keys()))

print(swapped_dict)
# 輸出: {1: 'a', 2: 'b', 3: 'c'}


謝謝大家觀看~ 希望大家會喜歡,喜歡的話可以給愛心~追蹤一下,不會漏掉之後的文章喔~

留言
avatar-img
留言分享你的想法!
avatar-img
螃蟹_crab的沙龍
141會員
251內容數
本業是影像辨識軟體開發,閒暇時間進修AI相關內容,將學習到的內容寫成文章分享。
螃蟹_crab的沙龍的其他內容
2025/04/25
在 Python 中,字典(dict)是非常常用的資料結構,用來儲存 key-value 配對。而在操作字典時,.setdefault() 是一個常被忽略但非常實用的方法。 這篇文章會完整介紹 .setdefault() 的語法、用途、與實務範例,幫助你更有效率地處理字典資料。 什麼是 .se
Thumbnail
2025/04/25
在 Python 中,字典(dict)是非常常用的資料結構,用來儲存 key-value 配對。而在操作字典時,.setdefault() 是一個常被忽略但非常實用的方法。 這篇文章會完整介紹 .setdefault() 的語法、用途、與實務範例,幫助你更有效率地處理字典資料。 什麼是 .se
Thumbnail
2025/01/30
Python 程式在電腦上的執行流程 當我們在電腦上執行 Python 程式時,主要經歷以下幾個步驟: 1. 編寫 Python 程式碼 開發者使用文字編輯器或 IDE(如 VS Code、PyCharm)撰寫 Python 程式,並將其存為 .py 檔案。 例如,一個簡單的 Python
Thumbnail
2025/01/30
Python 程式在電腦上的執行流程 當我們在電腦上執行 Python 程式時,主要經歷以下幾個步驟: 1. 編寫 Python 程式碼 開發者使用文字編輯器或 IDE(如 VS Code、PyCharm)撰寫 Python 程式,並將其存為 .py 檔案。 例如,一個簡單的 Python
Thumbnail
2024/10/17
在一個典型的程式專案中,UI、Controller 和 Main 的分工通常遵循 MVC 模型(Model-View-Controller) 的架構,這是一種常見的設計模式,能夠將應用程式的邏輯和界面進行分離。 大部分典型的程式專案設計: UI (View):專注於用戶界面,展示數據,並將用
Thumbnail
2024/10/17
在一個典型的程式專案中,UI、Controller 和 Main 的分工通常遵循 MVC 模型(Model-View-Controller) 的架構,這是一種常見的設計模式,能夠將應用程式的邏輯和界面進行分離。 大部分典型的程式專案設計: UI (View):專注於用戶界面,展示數據,並將用
Thumbnail
看更多
你可能也想看
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
在離線環境需要安裝Python套件時就相當的麻煩,需要先下載好套件包,在打指令安裝,若套件數量一多時就會相當麻煩。 本文將介紹如何利用兩行指令快速的安裝整個資料夾的套件。
Thumbnail
在離線環境需要安裝Python套件時就相當的麻煩,需要先下載好套件包,在打指令安裝,若套件數量一多時就會相當麻煩。 本文將介紹如何利用兩行指令快速的安裝整個資料夾的套件。
Thumbnail
在Python中,我們可以用def關鍵字定義函數,並透過函數名稱呼叫它。函數參數可以是必填、關鍵字、默認或不定長度的類型。return語句負責結束函數並回傳值。全域變數可以在整個程序中使用,而區域變數只能在特定函數內使用。我們還可以在一個文件中定義函數,然後在另一個文件中呼叫它。
Thumbnail
在Python中,我們可以用def關鍵字定義函數,並透過函數名稱呼叫它。函數參數可以是必填、關鍵字、默認或不定長度的類型。return語句負責結束函數並回傳值。全域變數可以在整個程序中使用,而區域變數只能在特定函數內使用。我們還可以在一個文件中定義函數,然後在另一個文件中呼叫它。
Thumbnail
今天來介紹python的函式 函式在python中是非常重要的一環,因為到了後期,程式會越來越複雜。 而函式可以想成是容易管理的小程式,當我們需要使用時,只需呼叫即可。
Thumbnail
今天來介紹python的函式 函式在python中是非常重要的一環,因為到了後期,程式會越來越複雜。 而函式可以想成是容易管理的小程式,當我們需要使用時,只需呼叫即可。
Thumbnail
古有四大名著,現今Python四大容器🤣 哪四個?list串列,tuple元組,dict字典,set集合。 那這四個怎麼分? 一起來看看吧! (以下有手寫與上機實際測試請付費觀看) 以上我精心整理主要會使用到的功能 當然python功能太多了,肯定不只。 實際操作: 大概就這樣?(
Thumbnail
古有四大名著,現今Python四大容器🤣 哪四個?list串列,tuple元組,dict字典,set集合。 那這四個怎麼分? 一起來看看吧! (以下有手寫與上機實際測試請付費觀看) 以上我精心整理主要會使用到的功能 當然python功能太多了,肯定不只。 實際操作: 大概就這樣?(
Thumbnail
在 Python 中,dir() 函式用於列舉對象的所有屬性和方法。這包括對象的內建屬性、方法以及自定義的屬性和方法。以下是一個簡單的示例: 列舉所有屬性與方法 class MyClass: def __init__(self): self.attribute1 = 42
Thumbnail
在 Python 中,dir() 函式用於列舉對象的所有屬性和方法。這包括對象的內建屬性、方法以及自定義的屬性和方法。以下是一個簡單的示例: 列舉所有屬性與方法 class MyClass: def __init__(self): self.attribute1 = 42
Thumbnail
本文介紹了Python中函式引數的*args和**kwargs用法,通過*args處理可變數量的位置引數,通過**kwargs處理可變數量的關鍵字引數。不僅介紹了相應的語法和程式範例,還解釋了它們的順序問題和建議的慣例用法。
Thumbnail
本文介紹了Python中函式引數的*args和**kwargs用法,通過*args處理可變數量的位置引數,通過**kwargs處理可變數量的關鍵字引數。不僅介紹了相應的語法和程式範例,還解釋了它們的順序問題和建議的慣例用法。
Thumbnail
本文介紹了Python中zip與enumerate函式的使用,以及它們的語法說明和程式範例。zip函式允許同時迭代多個可迭代對象,這使得程式碼更簡潔;而enumerate函式則在迭代時,提供元素的索引,使得實用工具,尤其是當需要追蹤元素的位置時。
Thumbnail
本文介紹了Python中zip與enumerate函式的使用,以及它們的語法說明和程式範例。zip函式允許同時迭代多個可迭代對象,這使得程式碼更簡潔;而enumerate函式則在迭代時,提供元素的索引,使得實用工具,尤其是當需要追蹤元素的位置時。
Thumbnail
本文介紹了串列運算式的應用,以及與Lambda匿名函式方法的比較,並提供了程式範例。串列運算式提供了一種簡潔的語法,用於創建、轉換和過濾列表。lambda函式用於創建匿名函式,通常用於簡單的操作。建議在比較複雜的情況下使用一般for迴圈加if來表示。
Thumbnail
本文介紹了串列運算式的應用,以及與Lambda匿名函式方法的比較,並提供了程式範例。串列運算式提供了一種簡潔的語法,用於創建、轉換和過濾列表。lambda函式用於創建匿名函式,通常用於簡單的操作。建議在比較複雜的情況下使用一般for迴圈加if來表示。
Thumbnail
列表(List)和元組(Tuple)都是 Python 中用來存儲集合元素的數據結構,兩者看起來很像,在初學時很容易搞混,所以觀念要建立好。 可以把列表(List)和元組(Tuple)想像成是一個容器,什麼元素都可以塞
Thumbnail
列表(List)和元組(Tuple)都是 Python 中用來存儲集合元素的數據結構,兩者看起來很像,在初學時很容易搞混,所以觀念要建立好。 可以把列表(List)和元組(Tuple)想像成是一個容器,什麼元素都可以塞
Thumbnail
本文將介紹自定函式及應用,利用程式範例解釋為什麼要用到自定函式 自定函式好處當然就是,讓你的程式碼看起來比較簡潔,在重複使用到的程式碼區塊,可以包裝成函式,讓你重複使用它。
Thumbnail
本文將介紹自定函式及應用,利用程式範例解釋為什麼要用到自定函式 自定函式好處當然就是,讓你的程式碼看起來比較簡潔,在重複使用到的程式碼區塊,可以包裝成函式,讓你重複使用它。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News