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

如何循环为函数输出分配不同变量?解决列表索引越界问题

解决IndexError: list assignment index out of range问题

你遇到的问题根源很明确:空列表没有任何元素,直接通过索引赋值(比如x_train[index] = ...)肯定会报错,因为这个索引对应的位置根本不存在。你的循环里试图用os.listdir('/directory').index(filename)作为索引来赋值,但初始的x_train等都是空列表,连索引0对应的位置都还没创建,自然会触发索引越界错误。

简便的解决思路

不用纠结索引,直接用列表的append()方法来动态添加元素就行——这是处理这种场景最直接高效的方式。另外建议把os.listdir('/directory')的结果先存成变量,避免循环里重复调用,既提升效率又能避免目录内容变化带来的意外问题。

修正后的代码

import os

x_train = [] 
y_train = [] 
x_test = [] 
y_test = []

# 先获取目录下的所有文件名,避免重复调用os.listdir
file_list = os.listdir('/directory')
for filename in file_list:
    # 调用format_data获取四个返回值
    xt, yt, xe, ye = lstm.format_data(new, seq_len, True)
    # 分别追加到对应的列表中
    x_train.append(xt)
    y_train.append(yt)
    x_test.append(xe)
    y_test.append(ye)

额外优化提醒

我注意到你循环遍历文件名,但代码里没把filename传入lstm.format_data()——如果这个函数需要根据不同文件生成不同数据,记得把filename作为参数传进去,比如:

xt, yt, xe, ye = lstm.format_data(filename, new, seq_len, True)

不然循环遍历每个文件却没用到文件名,每次返回的结果都会是一样的,这大概率不是你想要的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:47:32