【问题标题】:Index out of range error in Python (IndexError: list index out of range)Python中的索引超出范围错误(IndexError:列表索引超出范围)
【发布时间】:2017-09-29 17:56:02
【问题描述】:

我似乎无法在这里找到超出范围的问题:

layerZ = [layer_1,layer_2,layer_3,layer_4,layer_5,layer_6,layer_7,layer_8,layer_9,layer_10,layer_11,layer_12,layer_13]
    for x in range(0, 12):
        layerZ_total = [np.size(layerZ[x])]
        layerZ_sp = [np.count_nonzero(layerZ[x]==0)]
        layerZ_nonSp = [np.count_nonzero(layerZ[x])]

        #Printing the results on scree to trace
        print "Layer:",x+1,"Threshhold:",repr(ths),"Total Parameters: ",layerZ_totParam[x],"# Sp: ",layerZ_sp[x],"# Remained : ",layerZ_nonSp[x],"Sp %: ",float(layerZ_sp[x])/layerZ_total[x]

【问题讨论】:

  • 您的 layerZ_totallazerZ_splayerZ_nonSp 列表的长度均为 1,因为您每次迭代都从头开始创建它们。因此,它们不能有除 0 之外的任何其他索引,但您使用 x 对它们进行索引。
  • 啊,谢谢@MartijnPieters。我应该为所有这些使用layerZ_total[x]=...。对吗?
  • 我不知道你的代码应该做什么。我所能做的就是指出错误的原因。

标签: python python-2.7 indexoutofrangeexception


【解决方案1】:

这应该会有所帮助:

layerZ = [layer_1,layer_2,layer_3,layer_4,layer_5,layer_6,layer_7,layer_8,layer_9,layer_10,layer_11,layer_12,layer_13]

layerZ_total = []
layerZ_sp = []
layerZ_nonSp = []


for x in range(0, 12):
    layerZ_total.append(np.size(layerZ[x]))
    layerZ_sp.append(np.count_nonzero(layerZ[x]==0))
    layerZ_nonSp.append(np.count_nonzero(layerZ[x]))

    #Printing the results on scree to trace
    print "Layer:",x+1,"Threshhold:",repr(ths),"Total Parameters: ",layerZ_total[x],"# Sp: ",layerZ_sp[x],"# Remained : ",layerZ_nonSp[x],"Sp %: ",float(layerZ_sp[x])/layerZ_total[x]

在您的代码中,列表 layerZ_totallayerZ_splayerZ_nonSp 每次在循环内都使用单个值重新初始化,因此当您尝试访问某些 @987654326 时,其中仅包含一个位于 index 0 的元素@,弹出list index out of range错误。

如果您要对layerZ 列表中的每个layer_* 进行处理(取决于您的要求),则需要range(0, 13),因为在执行此操作后x 将采用0 到@ 的值987654333@ 从而处理您的layerZ 列表中的每个layer

【讨论】:

    猜你喜欢
    • 2018-04-22
    • 2020-09-04
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2016-08-25
    • 2017-04-05
    • 2012-07-15
    相关资源
    最近更新 更多