Python基础之enumerate()函数用法详解

 更新时间:2025年12月03日 08:41:11   作者:Geoking.  
enumerate()函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在for循环当中,这篇文章主要介绍了Python基础之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 = 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()函数用法的文章就介绍到这了,更多相关Python基础enumerate()函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python利用脚本轻松实现ssh免密登陆配置

    python利用脚本轻松实现ssh免密登陆配置

    这篇文章主要为大家详细介绍了python如何利用脚本轻松实现ssh免密登陆配置,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12
  • Python中的变量和作用域详解

    Python中的变量和作用域详解

    这篇文章主要介绍了Python中的变量和作用域详解的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-07-07
  • python 爬取学信网登录页面的例子

    python 爬取学信网登录页面的例子

    今天小编就为大家分享一篇python 爬取学信网登录页面的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • python如何根据windows窗口名称、进程pid打开窗口(pygetwindow)

    python如何根据windows窗口名称、进程pid打开窗口(pygetwindow)

    pygetwindow是一个Python库,用于获取、操作和管理当前打开的窗口,提供窗口句柄、位置和大小获取、移动、调整大小、最小化、最大化、还原窗口、模拟输入和焦点控制等功能
    2026-02-02
  • 详解Python的条件语句

    详解Python的条件语句

    这篇文章主要为大家介绍了Python的条件语句,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • PyTorch中torch.nn模块的实现

    PyTorch中torch.nn模块的实现

    torch.nn是PyTorch中用于构建神经网络的核心模块,包括多种组件,每个组件都有其特定的原理和使用场景,本文就来详细的介绍一下如何使用,感兴趣的可以了解一下
    2024-09-09
  • python绘制浅色范围曲线的示例代码

    python绘制浅色范围曲线的示例代码

    这篇文章主要介绍了python绘制浅色范围曲线,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-10-10
  • python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例

    python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例

    今天小编就为大家分享一篇python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • Python中Functools模块的高级操作详解

    Python中Functools模块的高级操作详解

    functools模块是Python标准库中的一个宝库,提供了一些有用的功能,可以帮助您更好地利用函数的潜力,下面小编就来为大家介绍一下functools模块的相关具体使用吧
    2023-11-11
  • python3.7.3版本和django2.2.3版本是否可以兼容

    python3.7.3版本和django2.2.3版本是否可以兼容

    在本篇文章里小编给大家整理的是一篇关于python3.7.3版本和django2.2.3版本是否可以兼容的相关知识点内容,有兴趣的朋友们可以学习下。
    2020-09-09

最新评论