跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python算法

Python 内置函数 enumerate() 详解

Python 内置函数 enumerate()。该函数用于在遍历可迭代对象时自动获取索引和值,返回枚举对象。文章涵盖基本语法、自定义起始索引、底层原理(生成器)、与普通循环对比及高级用法。相比手动维护索引,enumerate() 代码更简洁、可读性更高且内存占用相似。适用于列表、字符串、字典等多种可迭代对象,是 Python 编程中的常用技巧。

心动瞬间发布于 2026/3/30更新于 2026/9/1073 浏览
Python 内置函数 enumerate() 详解

Python 内置函数 enumerate() 详解

一、enumerate() 是什么?

enumerate /ɪˈnjuːməreɪt/

中文名即为枚举。

日常 Python 编程中,我们经常需要在遍历列表、元组或字符串时,同时获取元素的索引和值。如果你曾这样写过代码:

index = 0
for value in ['a', 'b', 'c']:
    print(index, value)
    index += 1

那恭喜你,是时候认识一个更优雅的 Python 内置函数——enumerate()。

enumerate() 是 Python 的内置函数,用于在遍历可迭代对象时自动计数。它返回一个枚举对象(enumerate object),其中每个元素是一个 (index, value) 元组。

二、基本语法

enumerate(iterable, start=0)

参数说明:

  • iterable:可迭代对象(如列表、元组、字符串等)
  • start:索引的起始值(默认从 0 开始)

返回值:

  • 一个可迭代的 enumerate 对象

三、基本用法示例

fruits = ['apple', 'banana', 'cherry']
for index, fruit in enumerate(fruits):
    print(index, fruit)

输出:

0 apple
1 banana
2 cherry

可以看到,enumerate() 自动为我们生成了索引。

四、自定义起始索引

有时候我们不希望从 0 开始计数,比如行号通常从 1 开始。可以使用 start 参数来自定义:

for index, fruit in enumerate(fruits, start=1):
    print(f"第个水果是 ")
{index}
{fruit}

输出:

第 1 个水果是 apple
第 2 个水果是 banana
第 3 个水果是 cherry

五、enumerate() 的底层原理

enumerate() 实际上等价于下面这种写法:

def my_enumerate(iterable, start=0):
    n = start
    for elem in iterable:
        yield n, elem
        n += 1

它返回的是一个生成器(iterator),在循环中逐步生成索引和值,因此不会占用额外的内存。

六、与普通循环的对比

功能普通循环使用 enumerate()
需要手动维护索引是否
可读性一般更高
内存占用相似相似
推荐使用不推荐推荐

示例对比:

# 传统写法
for i in range(len(fruits)):
    print(i, fruits[i])

# enumerate 写法(更简洁)
for i, fruit in enumerate(fruits):
    print(i, fruit)

下次你再需要索引和元素同时出现时,记得不要再用 range(len(...)),直接用 enumerate()。

七、结合条件语句的高级用法

enumerate() 常常与条件判断搭配使用,用来查找特定元素的位置。

nums = [10, 20, 30, 40, 50]
for i, num in enumerate(nums):
    if num == 30:
        print(f"找到了 30,在索引 {i}")

输出:

找到了 30,在索引 2

八、与其他可迭代对象一起使用

enumerate() 不仅能用于列表,也能用于字符串、元组、集合、字典(遍历 key 或 value)等。

遍历字符串:
for i, ch in enumerate("Python"):
    print(i, ch)

输出:

0 P
1 y
2 t
3 h
4 o
5 n
遍历字典的键:
data = {'a': 1, 'b': 2, 'c': 3}
for i, key in enumerate(data):
    print(i, key, data[key])

输出:

0 a 1
1 b 2
2 c 3

九、将枚举对象转换为列表或字典

enumerate() 返回的是一个枚举对象,我们可以直接转换为其他类型。

fruits = ['apple', 'banana', 'cherry']
# 转换为列表
print(list(enumerate(fruits)))
# [(0, 'apple'), (1, 'banana'), (2, 'cherry')]

# 转换为字典
print(dict(enumerate(fruits, start=1)))
# {1: 'apple', 2: 'banana', 3: 'cherry'}

这在数据映射或索引管理时非常实用。

参考资料

  • Python 官方文档 – enumerate()
  • Real Python 教程:Looping Techniques

目录

  1. Python 内置函数 enumerate() 详解
  2. 一、enumerate() 是什么?
  3. 二、基本语法
  4. 三、基本用法示例
  5. 四、自定义起始索引
  6. 五、enumerate() 的底层原理
  7. 六、与普通循环的对比
  8. 传统写法
  9. enumerate 写法(更简洁)
  10. 七、结合条件语句的高级用法
  11. 八、与其他可迭代对象一起使用
  12. 遍历字符串:
  13. 遍历字典的键:
  14. 九、将枚举对象转换为列表或字典
  15. 转换为列表
  16. [(0, 'apple'), (1, 'banana'), (2, 'cherry')]
  17. 转换为字典
  18. {1: 'apple', 2: 'banana', 3: 'cherry'}
  19. 参考资料

更多推荐文章

查看全部
  • 技术实践笔记:WordPress 部署、MyBatis-Plus 接口设计与依赖排查
  • 前端权限管理实现方案与最佳实践
  • Gemini 2.5 Pro 技术突破与实战应用深度解析
  • Ubuntu 24.04 离线安装 Ollama 及导入模型教程
  • VSCode 高效代码开发:Copilot 与 Cline 插件配置指南
  • 大模型量化详解:基于 llama.cpp
  • 沃研 Turbo 科研大模型发布:支持论文推荐、降重与润色
  • 基于 AIGC 与大模型的实时互动小游戏实现
  • 上手 Trae AI:从安装到实际项目的踩坑与心得
  • FPGA FIFO IP 核配置与原理详解
  • 大模型基础概念、训练流程及设备选型指南
  • OpenClaw 智能体安装部署、QQ 机器人接入及运维指南
  • C++ 基于红黑树实现 set 和 map 容器
  • Fish Speech-1.5 语音风格控制:通过描述词定制音色与语调
  • Cursor Agent Skills 实战指南:打造专属前端 AI 助手
  • DeepSeek-R1-Distill-Llama-8B 部署教程:Docker Compose 多模型推理服务
  • JavaScript 运算符与流程控制详解
  • RTOS 智能家居中间层架构与通信机制
  • LeetCode 热题 100 快速通关指南与核心算法模板
  • 蓝桥杯省赛真题:统计子矩阵问题解析

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online