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

Python 内置函数 enumerate() 详解

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

心动瞬间发布于 2026/3/30更新于 2026/5/2430 浏览
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. 参考资料
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Java Web 开发基础与 Servlet 核心技术
  • 无线联邦学习:隐私保护下的分布式 AI 协同演进
  • 基于 Gradio 扩展 Youtu-VL-4B-Instruct WebUI 实现图片批处理
  • Docker 镜像拉取超时错误解决方案
  • LangChain 1.0 架构全景、Runnable 协议与 LCEL 声明式语法解析
  • OpenClaw + MCP:构建支持任意工具的 AI 助手
  • ES6 模板字符串核心用法与特性详解
  • Llama-Factory 跨平台微调指南:Windows、MacOS 与 Linux 环境配置
  • 英伟达 Feynman 芯片架构与 NemoClaw 开源智能体平台技术解析
  • Spring Web MVC 核心注解与请求映射实战
  • 渐进式 AIGC 系统:支持 Nano-Banana 绘画、VEO3/Sora-2 视频及 Agent 智能体
  • FPGA 实现 CIC 抽取滤波器
  • OpenClaw Java:基于 Spring Boot 的 AI Agent Gateway 全栈实践
  • OpenClaw 安装部署全流程:搭建你的自托管 AI 助手
  • SQL Server 2025 安装指南
  • GitHub 界面中文化插件安装与使用指南
  • VSCode 关闭 Copilot 代码 AI 补全
  • OpenCode 使用指南:AI Skills 安装与配置教程
  • C++ 标准库 string 类详解与模拟实现
  • Win10 禁用 Microsoft 365 Copilot 弹窗的 6 种方案

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如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