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

Python新手求助:generate_distribution函数运行报索引越界错误的原因?

错误原因
  • 空列表索引访问错误:你初始化new_list = []为空列表,循环第一次执行时i=0,直接访问new_list[i-1]也就是new_list[-1],空列表没有任何有效索引,直接触发越界错误。
  • 逻辑偏差错误:从代码上下文判断,你应该是要生成一个长度为size的一维列表,每个位置填充对应数值,但你现在把.append()方法作用在new_list[i-1]上,相当于默认new_list是二维列表,和需求逻辑不符,就算解决空列表问题后续也会报错。
  • 边界值潜在风险:你把两个分布参数乘100转成整数,没有校验两个分布参数之和是否超过1,比如distribution_negative=0.6、distribution_positive=0.5的场景下,x+y=110,如果size小于110也会出现逻辑异常。
修复后的代码
def generate_distribution(size, distribution_positive, distribution_negative):
    x = int(distribution_negative * 100)
    y = int(distribution_positive * 100)
    # 可选:增加参数合法性校验
    if x + y > 100:
        raise ValueError("正负样本分布占比之和不能超过1")
    new_list = []
    for i in range(size):
        if i < x:
            new_list.append(-1)
        elif x <= i < x + y:
            new_list.append(1)
        else:
            new_list.append(0)
    return new_list
补充说明
  • 如果你确实需要生成二维列表,请先初始化new_list的每一个子元素为空白列表,示例:new_list = [[] for _ in range(行数)],再访问对应索引的子列表执行append操作。
  • 如果对分布占比精度要求较高,建议不要直接用int()截断,可以用四舍五入等方式处理,避免占比误差过大。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:54:08