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

Python遍历列表报错TypeError:列表索引必须为整数或切片而非字符串

报错核心原因

两种遍历写法的循环变量拿到的值完全不一样:

  • 第一种for i in range(len(li))写法中,i是range生成的从0开始的连续整数,正好对应列表的合法下标,所以li[i]的写法符合Python列表「索引必须是整数/切片」的要求,可以正常运行。
  • 第二种for words in li是Python里遍历列表的更简洁写法,循环变量words拿到的直接是列表里存储的元素本身,也就是'this'/'is'这类字符串,根本不是下标。此时写li[words]等价于写li['this'],用字符串给列表做索引自然会触发类型报错。

你尝试用int()强转words没用的原因也很简单:这些words是纯英文字符串,不是数字格式的文本,根本没法转成整数,就算强行转也会抛ValueError,本质是逻辑搞错了——你在直接遍历元素的场景下,本来就不需要再通过索引去取元素。

正确写法

根据你的需求选对应写法即可:

  • 只需要遍历输出所有元素:直接打印循环拿到的元素即可,不需要额外索引访问
li = ['this', 'is', 'an', 'example', 'list']
for words in li:
    print(words)
  • 遍历过程中需要同时拿到元素和它对应的整数下标:用内置的enumerate()函数,比range(len(li))的写法更符合Python编码规范
li = ['this', 'is', 'an', 'example', 'list']
for index, words in enumerate(li):
    print(f"第{index}个位置的元素是:{words}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 11:48:27