Python 3.x 为什么在下面的代码中max()函数出现列表索引错误?

Python 3.x 为什么在下面的代码中max()函数出现列表索引错误?,python-3.x,Python 3.x,我有一个包含以下数据的列表- [[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)) rM

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

[[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]))
从print语句中,我得到的r1值是-

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

有人能帮帮我吗?我花了整整一个晚上,试图弄清楚并重新检查一切。继续获取它。

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

但是
sRows
没有四个元素,索引
3
中没有元素。虽然在
sRows[0]
中(以及在
sRows[1]
sRows[2]
中)还有第四个元素。
len(sRows[0])
只是这三个元素列表中第一项的长度。。您正在使用子列表中的元素数。。您应该使用
len(sRows)
r1 is : 0
r1 is : 1
r1 is : 2
r1 is : 3