如何在 Python 中使用枚举(带索引循环)
了解如何在 Python 中使用 enumerate() 函数。循环使用干净示例的列表时获取索引和值。
概述
当迭代列表、元组或字符串时,您通常需要跟踪每个项目的当前索引以及项目本身。常见的初学者模式是使用手动递增的单独计数器变量,或使用“range(len(my_list))”通过索引进行迭代。然而,Python 提供了一个更加优雅、Python 化的内置解决方案:“enumerate()”函数。
enumerate() 函数将任何可迭代对象作为参数并返回一个枚举对象,该对象生成索引值元组对。通过在“for”循环中使用元组解包,您可以同时提取索引和项目。这完全消除了对手动计数器变量和索引括号的需要,使您的代码显着简洁,并且不太容易出现相差一错误。
默认情况下,“enumerate()”从“0”开始计算索引。但是,您可以使用可选的“start”关键字参数(例如“enumerate(items, start=1)”)传递自定义起始索引。当向人类用户显示列表编号时,这非常有用,因为人们通常希望列表从 1 而不是 0 开始计数。
代码和执行输出
此脚本演示了使用 enumerate 迭代列表以获取从 0 和 1 开始的索引项对。
use_enumerate.py
在编辑器中尝试fruits = ["apple", "banana", "cherry"]
# 1. Standard enumeration (starts at 0)
print("--- Standard Enumeration ---")
for index, fruit in enumerate(fruits):
print(f"Index {index}: {fruit}")
# 2. Enumeration starting at a custom index (e.g., 1)
print("\n--- Starting at 1 ---")
for num, fruit in enumerate(fruits, start=1):
print(f"Item #{num}: {fruit}")端子输出
--- Standard Enumeration ---
Index 0: apple
Index 1: banana
Index 2: cherry
--- Starting at 1 ---
Item #1: apple
Item #2: banana
Item #3: cherry逐步实施
- 将列表(或任何可迭代对象)传递给内置 enumerate() 函数。
- 使用 for index, value in enumerate(list) 语法在 for 循环中解压返回的元组。
- 提供启动参数(例如,start=1)以修改初始索引计数器值。
常见问题解答
enumerate() 是否修改了原始列表?
不, enumerate() 返回一个惰性迭代器对象,并使原始列表完全不被修改。
我可以将 enumerate() 与字典一起使用吗?
是的,但是直接迭代字典会产生它的键。要迭代索引键值,请使用: for i, (k, v) in enumerate(my_dict.items()):。
相关主题
推荐的 Python 资源
通过相关的交互式教程、备忘单和代码比较来扩展您的知识。