Python向嵌套列表添加元素触发IndexError索引越界错误求助
IndexError: list index out of range 错误原因及修复方案
你遇到的IndexError核心问题是:初始化的num是空列表,但代码直接尝试通过num[i]访问不存在的子列表。当外层循环第一次执行i=0时,num里还没有任何元素,num[0]自然不存在,触发索引越界。
错误原因
num初始化为空列表[],未提前为每个外层循环的i创建对应的子列表,导致在内层循环中调用num[i].append()时,num[i]不存在。
修复方案
方案一:外层循环先创建子列表
在每次外层循环开始时,先给num添加一个空的子列表,再在内层循环中向这个子列表追加元素:
n = len(network) # len()返回整数,无需int()转换 num = [] for i in range(n): num.append([]) # 先初始化当前i对应的子列表 for j in range(n): num[i].append(int(between_lists(network[i], network[j]))) return num
方案二:使用列表推导式(更简洁)
利用Python的嵌套列表推导式,一次性生成目标嵌套列表,代码更紧凑高效:
n = len(network) num = [[int(between_lists(network[i], network[j])) for j in range(n)] for i in range(n)] return num
额外优化点
- 原代码中的
int(len(network))是冗余操作,因为len()函数本身返回的就是整数类型,直接赋值n = len(network)即可。
内容的提问来源于stack exchange,提问作者wise john
相关产品推荐
相关产品推荐

