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

Python二维列表赋值报错IndexError: list assignment index out of range

问题分析与解决方案

错误原因

你遇到的IndexError: list assignment index out of range是两个核心问题导致的:

  1. 二维列表结构搞反:你初始化的pictures = [[x for x in range(7)] for y in range(25)]是25个子列表(对应25行),每个子列表仅7个元素(对应7列),但你的需求是7个实验对应7个子列表,每个子列表要存25张图,子列表长度不足导致存到第8张图时就会索引越界。
  2. 图片索引未重置:imgC在第一个实验循环结束后不会自动归零,第二个实验开始时imgC会从25继续递增,直接超出子列表的合法索引范围(0-24)。

修正后的代码

# 初始化符合需求的二维列表:7个实验,每个实验预留25个图片位置
pictures = [[None for _ in range(25)] for _ in range(7)]

# 用enumerate自动维护实验索引,避免手动管理expC
for expC, exp_name in enumerate(experimentNames):
    imgC = 0  # 每个实验开始时重置图片索引
    for picture_path in glob.iglob(f'{exp_name}/**/*.png', recursive=True):
        # 防止单个实验图片数量超过25张导致再次越界
        if imgC >= 25:
            print(f"实验{exp_name}的图片数量超过25张,跳过剩余图片")
            break
        img = cv.imread(picture_path)
        pictures[expC][imgC] = img
        imgC += 1

额外说明

  • 初始化列表时不要用[[None]*25]*7,这种写法会让7个子列表指向同一个内存对象,修改其中一个会影响全部。
  • 加入的图片数量判断可以提前拦截异常,如果你确认每个实验恰好25张图,也可以去掉这个判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 11:57:27