Why am I getting IndexError: list index out of range in this code?
Why am I getting IndexError: list index out of range in this code?
我正在尝试进行双向冒泡排序。在奇数次迭代中,它冒泡并向右排序,在偶数次迭代中,它冒泡并向左排序。
def main():
myList = [10,9,8,7,6,5,4,3,2,1]
lengthOfList = len(myList)
firstThresh = 0
lastThresh = lengthOfList
oddPass = True
while firstThresh <= lastThresh:
if oddPass == True:
for index in myList[firstThresh:lastThresh]:
if myList[index] > myList[index+1]: <==================
temp = myList[index]
myList[index] = myList[index+1]
myList[index+1] = temp
print(myList)
oddPass = False
lastThresh -= 1
else:
for index in reversed(myList[firstThresh:lastThresh]):
if myList[index] < myList[index-1]:
temp = myList[index]
myList[index] = myList[index-1]
myList[index+1] = temp
print(myList)
oddPass = False
firstThresh += 1
main()
错误:
第 22 行,在 bubbleSort2Way 中
如果 myList[index] > myList[index+1]:
IndexError: 列表索引超出范围
我把箭头放在问题所在的地方。
我是编程的初学者,所以如果很明显我很抱歉!
任何帮助都会很棒!
行
for index in myList[firstThresh:lastThresh]:
正在使用 myList
中的值,而不是索引。因此代码试图访问只有 10 个元素的列表中的第 11 个元素(索引“10”)并出现超出范围错误。
要在循环中使用索引,请将此行更改为
for index, value in enumerate(myList[firstThresh:lastThresh]):
我正在尝试进行双向冒泡排序。在奇数次迭代中,它冒泡并向右排序,在偶数次迭代中,它冒泡并向左排序。
def main():
myList = [10,9,8,7,6,5,4,3,2,1]
lengthOfList = len(myList)
firstThresh = 0
lastThresh = lengthOfList
oddPass = True
while firstThresh <= lastThresh:
if oddPass == True:
for index in myList[firstThresh:lastThresh]:
if myList[index] > myList[index+1]: <==================
temp = myList[index]
myList[index] = myList[index+1]
myList[index+1] = temp
print(myList)
oddPass = False
lastThresh -= 1
else:
for index in reversed(myList[firstThresh:lastThresh]):
if myList[index] < myList[index-1]:
temp = myList[index]
myList[index] = myList[index-1]
myList[index+1] = temp
print(myList)
oddPass = False
firstThresh += 1
main()
错误: 第 22 行,在 bubbleSort2Way 中 如果 myList[index] > myList[index+1]: IndexError: 列表索引超出范围
我把箭头放在问题所在的地方。 我是编程的初学者,所以如果很明显我很抱歉! 任何帮助都会很棒!
行
for index in myList[firstThresh:lastThresh]:
正在使用 myList
中的值,而不是索引。因此代码试图访问只有 10 个元素的列表中的第 11 个元素(索引“10”)并出现超出范围错误。
要在循环中使用索引,请将此行更改为
for index, value in enumerate(myList[firstThresh:lastThresh]):