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