首页 > 解决方案 > 为什么我在以下代码中的 max() 函数上出现列表索引错误?

问题描述

我有一个包含以下数据的列表 sRows -

[[500.0, 1.0, 25.0, 15.0], [500.0, 0.75, 30.0, 20.0], [1000.0, 2.0, 25.0, 15.0]]

我的代码是 -

sCols = len(sRows[0])
    
for r1 in range(sCols):
        
        if r1 < 2:
            print("r1 is : " + str(r1))
            rMin.append(min(sRows[r1]))
        else:
            print("r1 is : " + str(r1))
            rMin.append(max(sRows[r1]))

我在最后一行收到 IndexError: list index out of range 错误-

rMin.append(max(sRows[r1]))

从打印语句中,我得到的 r1 值是 -

r1 is : 0
r1 is : 1
r1 is : 2
r1 is : 3

有人可以帮助我吗?我花了整整一夜,试图弄清楚并重新检查一切。还是继续收吧。

标签: python-3.x

解决方案


由于 sCols 变量的值为 4,当您将该值传递给 range() 函数时,它将返回的最后一个数字是 3。因此,在最终迭代中 r1 的值是 3。您的列表只有三个元素(3 行),您的 sRows 列表可以拥有的最大索引是 2 而不是 3。因此出现错误!希望它清除。


推荐阅读