![](/img/trans.png)
[英]Why is my index out of range? IndexError: list index out of range
[英]Why display my list index out of range
我正在编码二进制搜索,我定义了一个函数,并有4个参数,其中一个参数number是您要搜索的数字,但是当我输入一个比列表的最后一个数字大的数字时,编译器将显示列表索引超出范围,数字和索引之间有什么联系?
list = [2, 3, 4, 6, 8, 9, 10, 11, 20]
mid = len(list) / 2
left = 0
right = len(list)
def searchNumber(left, right, number, mid):
while left <= right:
mid = (right - left) / 2 + left
if list[mid] == number:
print("the local is in %d" % (mid))
return mid
break
elif list[mid] > number:
right = mid - 1
else:
left = mid + 1
list = [2, 3, 4, 6, 8, 9, 10, 11, 20]
mid = len(list) / 2
left = 0
right = len(list)
def searchNumber(left, right, number, mid):
**while left < right:**
mid = (right - left) / 2 + left
if list[mid] == number:
print("the local is in %d" % (mid))
return mid
break
elif list[mid] > number:
right = mid - 1
else:
left = mid + 1
我运行了这段代码,
list = [2, 3, 4, 6, 8, 9, 10, 11, 20]
mid = len(list) / 2
left = 0
right = len(list)
def searchNumber(left, right, number, mid):
while left <= right:
mid = (right - left) / 2 + left
if list[mid] == number:
print("the local is in %d" % (mid))
return mid
break
elif list[mid] > number:
right = mid - 1
else:
left = mid + 1
return None
a = searchNumber(0, len(list)-1, 40, 40)
print "a =" + str(a)
b = searchNumber(0, len(list)-1, 9, 5)
print "b =" + str(b)
在这两种情况下,我都得到了正确的输出,其中出现了要问的数字,并且要问的数字大于列表中的最大数字。
$ python pyt.py
a = None
the local is in 5
b = 5
我怀疑您得到的错误是因为您传递的数字是负数或大于数组的length-1,在其他情况下,您不会得到“索引超出范围”错误。
为什么要对答案投下反对票?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.