一、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()
會更通用。