Python 中 enumerate(s) 和 range() 的对比

一、enumerate(s) 是什么?

for i, c in enumerate(s):
    ...
  • enumerate(s) 是一个内置函数,用于在遍历可迭代对象时,同时获得元素的索引和值
  • 它返回的是一个**(index, element)** 元组。
  • 常用于遍历字符串、列表、元组等时,如果你既想拿到下标,又想拿到值,就用 enumerate()

例子:

s = 'abc'
for i, c in enumerate(s):
    print(i, c)

输出:

0 a
1 b
2 c

二、range() 是什么?

for i in range(len(s)):
    ...
  • range(n) 是一个生成整数序列的函数,通常用于按下标访问容器。
  • 它不直接给你元素,只给你索引(整数)。
  • 如果你需要拿到值,必须手动访问:s[i]

例子:

s = 'abc'
for i in range(len(s)):
    print(i, s[i])

输出一样:

0 a
1 b
2 c

三、总结对比表

对比点

enumerate(s)

range(len(s))

是否返回元素值

✅ 返回 (索引, 元素值)

❌ 只返回索引,需手动 s[i] 获取值

可读性

✅ 更直观、语义清晰

⚠️ 略繁琐(尤其访问元素需要 s[i]

是否依赖索引访问

❌ 不依赖索引访问

✅ 必须依赖索引访问

适用范围

适合遍历时需要“下标 + 元素值”

适合只需要索引或配合 s[i] 使用


✅ 总结建议

  • 如果你在遍历一个字符串、列表等时,同时需要索引和元素 —— 用 enumerate()简洁、优雅
  • 如果你只是基于索引操作(如双指针、窗口处理) —— range() 会更通用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值