一、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()
更简洁、优雅; - 如果你只是基于索引操作(如双指针、窗口处理) ——
range()
会更通用。