You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python遍历集合为何无需索引?迭代元素作下标为何报错

报错原因

两种for循环的迭代变量取值逻辑完全不同:

  • 写法for i in cities:是直接迭代列表内存储的元素,每一轮循环的i就是列表里的具体值,依次为'London'、'Toronto'、'Paris'、'Oslo',因此直接执行print(i)可以正常输出所有城市名。
  • 写法print(cities[i])触发报错,是因为此时传入方括号的i是字符串类型的城市名,而Python列表的索引仅支持整数、切片类型,传入字符串自然会抛出类型错误。
  • 循环外执行cities[0]能正常返回结果,是因为传入的0是合法的整数索引,对应列表第一个位置的元素,和循环中传入字符串作为索引的场景没有可比性。
索引导向的正确遍历写法

如果遍历过程中确实需要用到索引位置,不要直接迭代列表元素,选以下两种标准写法即可:

  • 搭配range()和列表长度生成连续整数索引:
cities = ['London', "Toronto", 'Paris', 'Oslo']
for i in range(len(cities)):
    print(cities[i])
  • 用enumerate()同时获取索引和对应元素,可读性更高:
cities = ['London', "Toronto", 'Paris', 'Oslo']
for index, city in enumerate(cities):
    print(f"第{index}个城市是{city}")

遍历场景下如果不需要用到索引位置,直接迭代元素本身的写法最简洁,不需要额外绕索引访问的逻辑。

内容的提问来源于stack exchange,提问作者Master_Roshy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 11:51:24