Unexpected error: "IndexError: list index out of range" when trying to access a list within a function
Unexpected error: "IndexError: list index out of range" when trying to access a list within a function
def myMax(L):
print(L)
f=len(L)
ind=0
maxx=L[0]
for i in range(len(L)):
if L[i]>maxx:
maxx=L[i]
ind=i
return (ind,maxx)
print(myMax([1, 2, -9, 10]))
print(myMax([]))
我对 python 很陌生。上面是我编写的代码,它将一个列表作为输入,returns 一个具有最高数字索引和最高数字本身的元组。
出于某种原因,我在第 5 行收到“IndexError:列表索引超出范围”,其中“maxx=L[0]”
如有任何帮助,我们将不胜感激
您将空列表 : myMax([])
传递给函数并指向此空列表 L[0]
的第一个元素。您需要检查列表 L
是否不为空。
将以下内容添加为函数的第一行将帮助您防止 None 或空列表
if L is None or len(L) == 0:
raise ValueError('Input list can not be None or empty')
因为您是在代码最后一行的空列表上调用该函数。
print(myMax([]))
您传递给 myMax 函数的参数是长度为零的 []。
当您调用第五行时,您实际上是在尝试访问列表的第一个元素,它确实存在。事实上 Python 中的列表是从 0 到 n - 1 的索引,其中 n 是列表的大小。
默认情况下,当您尝试访问其不包含的索引上的数组时,解释器会引发异常 IndexError: list index out of range
。有几种方法可以处理这种情况,例如 try
except
控件,但在您的情况下,由于 returning 一个整数中的函数,我建议您在最后添加一个控件为了 return -1 在这种情况下。
def myMax(L):
if len(L) == 0:
return -1
# your code here
这样您就不会尝试越界访问,并且您有一个 return 代码表示发生了错误。
def myMax(L):
print(L)
f=len(L)
ind=0
maxx=L[0]
for i in range(len(L)):
if L[i]>maxx:
maxx=L[i]
ind=i
return (ind,maxx)
print(myMax([1, 2, -9, 10]))
print(myMax([]))
我对 python 很陌生。上面是我编写的代码,它将一个列表作为输入,returns 一个具有最高数字索引和最高数字本身的元组。
出于某种原因,我在第 5 行收到“IndexError:列表索引超出范围”,其中“maxx=L[0]”
如有任何帮助,我们将不胜感激
您将空列表 : myMax([])
传递给函数并指向此空列表 L[0]
的第一个元素。您需要检查列表 L
是否不为空。
将以下内容添加为函数的第一行将帮助您防止 None 或空列表
if L is None or len(L) == 0:
raise ValueError('Input list can not be None or empty')
因为您是在代码最后一行的空列表上调用该函数。
print(myMax([]))
您传递给 myMax 函数的参数是长度为零的 []。 当您调用第五行时,您实际上是在尝试访问列表的第一个元素,它确实存在。事实上 Python 中的列表是从 0 到 n - 1 的索引,其中 n 是列表的大小。
默认情况下,当您尝试访问其不包含的索引上的数组时,解释器会引发异常 IndexError: list index out of range
。有几种方法可以处理这种情况,例如 try
except
控件,但在您的情况下,由于 returning 一个整数中的函数,我建议您在最后添加一个控件为了 return -1 在这种情况下。
def myMax(L):
if len(L) == 0:
return -1
# your code here
这样您就不会尝试越界访问,并且您有一个 return 代码表示发生了错误。