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

Codecademy编程题:double_index函数报'int is not iterable'错误求助

解决你的double_index函数报错问题

嗨,我来帮你搞定这个问题~你的代码里有两个需要修正的地方,先从报错的根源说起:

1. 为什么会出现int is not iterable错误?

你这里的list(double_value)用法错了!double_value是一个整数(比如原列表对应位置元素是3,那它就是6),而list()函数要求传入可迭代对象(比如字符串、列表、元组这类能逐个取出元素的东西),整数不属于可迭代对象,所以Python会报错说“整数不能被迭代”。

你真正想做的是把这个双倍后的整数变成一个单元素列表,这样才能和前后的切片(lst[:index]和lst[index+1:]都是列表)拼接。所以应该把list(double_value)改成[double_value]——用方括号直接创建一个只包含这个整数的列表就好啦。

2. 索引判断的逻辑错误

原代码里的if index <= len(lst) and index >0:有两个问题:

  • 列表的索引是从0开始的,你写index>0就把合法的索引0排除了,比如传入index=0会直接返回原列表,这不符合需求;
  • index <= len(lst)会把超出范围的索引当成有效索引,比如列表长度是3,索引3是不存在的,这时候lst[index]会触发新的索引越界错误。

正确的有效索引判断应该是0 <= index < len(lst)——确保索引在合法的范围内(从0到列表长度减1)。

修正后的完整代码

def double_index(lst, index):
    # 判断索引是否在合法范围内
    if 0 <= index < len(lst):
        double_value = lst[index] * 2
        # 用单元素列表和切片拼接出新列表
        new_lst = lst[:index] + [double_value] + lst[index+1:]
        return new_lst
    else:
        return lst

测试示例

  • 调用double_index([1, 2, 3], 1),返回[1, 4, 3],符合预期;
  • 调用double_index([5, 10], 0),返回[10, 10],正确处理了索引0的情况;
  • 调用double_index([7], 1),返回原列表[7],因为索引1超出了范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 14:32:47