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

Python中使用嵌套循环输入二维数组时遇索引越界错误求助

解决Python二维数组赋值的"list index out of range"错误

你的代码出现索引越界错误,核心问题出在二维列表的初始化方式,以及后续的赋值逻辑上,具体修正如下:

1. 错误根源分析

  • prices= [ [] *8] *20 完全没创建出你需要的8行20列结构:
    • []*8 结果还是空列表(空列表乘任何整数都是空);
    • *20 是把这个空列表复制20次,但所有元素都指向同一个空列表,而且整个prices只有20个空列表元素,后续循环访问prices[page][price]时,prices[page]是空列表,自然没有price对应的索引,触发报错。
  • 循环里用.append()的逻辑也不对:你想给指定位置赋值,但空列表没有对应索引,应该先构建好结构,再赋值或逐行追加元素。

2. 修正后的代码方案

方案一:逐行追加元素(适合动态构建)

# 初始化8个独立的空列表,对应8页
prices = [[] for _ in range(8)]
images = [] 

for i in range(1,8):
    images.append(i)

for page in range(8):
    for _ in range(20):
        # 往当前页的列表里添加20个输入内容
        prices[page].append(input())

方案二:预先初始化结构再赋值(类似Java的二维数组)

如果你想预先固定8行20列的结构,再给每个位置赋值,可以这样写:

# 初始化8行,每行20个占位元素的二维列表
prices = [[None for _ in range(20)] for _ in range(8)]
images = [] 

for i in range(1,8):
    images.append(i)

for page in range(8):
    for price_idx in range(20):
        # 给指定位置直接赋值输入内容
        prices[page][price_idx] = input()

关键注意点

Python里创建二维列表,必须用列表推导式生成独立的子列表,比如[[] for _ in range(n)],而不能用[[]]*n——后者会导致所有子列表指向同一个内存地址,修改一个会影响全部。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 21:48:20