为什么用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
相关产品推荐
相关产品推荐

