当前位置: 首页 > news >正文

Python 基础详解:enumerate() 函数

请添加图片描述

文章目录

    • 请添加图片描述
    • 一、`enumerate()` 是什么?
    • 二、基本语法
    • 三、基本用法示例
    • 四、自定义起始索引
    • 五、`enumerate()` 的底层原理
    • 六、与普通循环的对比
    • 七、结合条件语句的高级用法
    • 八、与其他可迭代对象一起使用
      • 遍历字符串:
      • 遍历字典的键:
    • 九、将枚举对象转换为列表或字典
    • 📚 参考资料


一、enumerate() 是什么?

emurate /ɪˈ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 = startfor elem in iterable:yield n, elemn += 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

http://www.dtcms.com/a/528493.html

相关文章:

  • 基于鸿蒙UniProton的车载信息娱乐系统开发指南
  • 自然语言处理前沿创新方向与技术路径
  • 微软做网页的软件烟台优化网站公司
  • 使用Jmeter进行http接口测试
  • Jenkins从节点配置全攻略:从搭建到任务调度,参数详解与实战指南
  • 【Agentic AI】提示链模式学习笔记
  • 广东省省考备考(第一百三十三天10.25)——科学推理(强化训练)
  • 四季变化,室外太阳光的剧烈变化, 从“被动适应”到“主动免疫”,机器视觉检测如何实现?
  • 观察者模式学习
  • 常用标准电阻表 | E24标准电阻表
  • 三、检索增强生成(RAG)技术体系
  • 【Leetcode hot 100】739.每日温度
  • JAVA国际版任务悬赏发布接单系统源码支持IOS+Android+H5
  • 网站做选择题怎么快速选择艺术品拍卖网站源码php
  • 大模型微调完整步骤( LLama-Factory)
  • Rust + PostgreSQL:deadpool 和 diesel 数据库连接池实战(四)
  • 关于门户网站建设讲话关键词挖掘查询工具爱站网
  • GitHub等平台形成的开源文化正在重塑可以让
  • RHCSA-12计划任务
  • 快速提高网站权重提升门户网站地方生活门户有哪些
  • 【开题答辩全过程】以 产品报价系统为例,包含答辩的问题和答案
  • JS基础Day01
  • 建c2c网站深圳有名的品牌设计公司
  • 网页文字游戏seo入门
  • Windows系统内置的WIN32控件可分为标准控件和通用控件两大类
  • 数据结构初阶:Java中的ArrayList
  • Linux修炼:Ext系列文件系统
  • RocketMQ源码详解(消费端启动流程)
  • 利用DeepSeek改写递归CTE SQL语句为Python程序及优化
  • Zama TFHE 密文的Bootstrapping:小于1ms!