首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

Python enumerate() 內建函數完整教學:索引與值同步迭代

     編輯:更多程式設計知識

基本語法

enumerate(iterable, start=0) -> iterator

核心優勢

取代 for i in range(len(seq)): val = seq[i],直接同時取得索引與值,程式碼更簡潔、可讀、效能更好。

基本範例


fruits = ['apple', 'banana', 'cherry']

for idx, fruit in enumerate(fruits):
    print(f"{idx}: {fruit}")
# 0: apple
# 1: banana
# 2: cherry

# 自訂起始索引
for idx, fruit in enumerate(fruits, start=1):
    print(f"{idx}. {fruit}")
# 1. apple
# 2. banana
# 3. cherry

進階用法


# 1. 列表推導式建立索引字典
index_map = {v: i for i, v in enumerate(fruits)}
# {'apple': 0, 'banana': 1, 'cherry': 2}

# 2. 同時迭代多個序列(配合 zip)
names = ['Alice', 'Bob', 'Carol']
scores = [85, 92, 78]
for i, (name, score) in enumerate(zip(names, scores), 1):
    print(f"#{i} {name}: {score}")

# 3. 字串枚舉
for i, ch in enumerate("Python"):
    print(i, ch)

# 4. 檔案行號(記憶體效率佳)
with open('large.log') as f:
    for line_no, line in enumerate(f, 1):
        if 'ERROR' in line:
            print(f"Line {line_no}: {line.strip()}")

原理說明


# enumerate 實作概念
def enumerate(iterable, start=0):
    i = start
    it = iter(iterable)
    while True:
        try:
            yield (i, next(it))
            i += 1
        except StopIteration:
            break

常見錯誤

  • 忘記解包:for item in enumerate(seq): → item 是 tuple,需 for idx, val in enumerate(seq):
  • 以為會建立列表:enumerate 回傳迭代器,惰性產生,記憶體友善
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved