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

为什么用for循环从另一列表追加新列表时出现TypeError错误?

问题解析:TypeError: list indices must be integers or slices, not str

错误代码分析

执行这段代码会触发类型错误:

l=["Mohi", "Moki", "Lucky", "Praty", "Prem"]
k=[]
for i in l:
   k.append(l[i])
print(k) 

原因很直接:for i in l循环时,i是列表l中的字符串元素(比如"Mohi"、"Moki"),而列表的索引必须是整数或切片类型。用字符串作为索引访问l[i],Python无法识别这种操作,因此抛出TypeError。

正确代码说明

这段代码能正常运行:

l=["Mohi", "Moki", "Lucky", "Praty", "Prem"]
k=[]
for i in range(len(l)):
   k.append(l[i])
print(k)

因为range(len(l))生成的是0到4的整数序列(对应列表的合法索引),i此时是整数类型,用l[i]可以正确取出对应位置的元素,所以不会报错。

更简洁的写法

如果只是要复制列表,没必要写循环,直接用更Pythonic的方式:

  • 方法1:k = l.copy()
  • 方法2:k = [item for item in l]
  • 方法3:k = list(l)

这些写法都能直接得到原列表的副本,代码更简洁高效。

内容的提问来源于stack exchange,提问作者B. Mohit Prasad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 09:55:24