继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Python 的内置函数 enumerate

2882716
关注TA
已关注
手记 25
粉丝 0
获赞 0

Python 的内置函数 enumerate() 是一个非常有用的工具函数,它能够在迭代序列(如列表、元组、字符串等)时,同时获取元素的索引和值。其基本语法如下:

enumerate(iterable, start=0)

其中:

  • iterable:任何可迭代对象
  • start:索引起始值,默认为 0

功能说明

enumerate() 返回一个枚举对象,该对象生成由索引和对应元素值组成的元组。这在需要同时跟踪元素位置和内容的情况下特别有用。

使用示例

  1. 基本用法:
fruits = ['apple', 'banana', 'orange']
for index, fruit in enumerate(fruits):
    print(index, fruit)

输出:

0 apple
1 banana
2 orange
  1. 自定义起始索引:
for index, fruit in enumerate(fruits, start=1):
    print(index, fruit)

输出:

1 apple
2 banana
3 orange
  1. 转换为列表:
list(enumerate(fruits))

输出:

[(0, 'apple'), (1, 'banana'), (2, 'orange')]

应用场景

  1. 需要索引的循环:当循环中既需要元素值又需要其位置时,比手动维护计数器更优雅
  2. 创建字典映射:可以将序列转换为索引到值的映射
  3. 日志记录:在输出日志时包含元素位置信息
  4. 并行处理:当处理多个相关序列时,可以使用相同索引关联不同序列的元素

实现原理

enumerate() 本质上是一个生成器函数,它等价于:

def enumerate(sequence, start=0):
    n = start
    for elem in sequence:
        yield n, elem
        n += 1

注意事项

  1. 对于空序列,enumerate() 不会产生任何值
  2. 返回的是迭代器,只能被消耗一次
  3. zip() 函数结合使用时可以同时迭代多个序列

性能考虑

enumerate() 是内置函数,实现为 C 语言级别,性能优异。相比手动维护计数器(如 i = 0; i += 1)的方式,enumerate() 通常更高效且不易出错。

通过使用 enumerate(),可以使代码更加简洁、可读,同时避免常见的索引错误。它是 Python 迭代处理中的常用工具之一。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP