我正在做一个在线python课程,不明白我的列表的范围是如何与排序程序一起工作的。
这段代码工作,但我不明白为什么负1是必要的
for i in range(len(myList)-1):
我试图通过删除它来破坏代码,这很有效。显然没有'-1'第6行超出了范围。所以我明白这是必要的,以便代码运行,但我不明白为什么取长度并从它明显减去1扩展了范围。
myList = [8, 10, 6, 2, 4] # list to sort
swapped = True # it's a little fake - we need it to enter the while loop
while swapped:
swapped = False # no swaps so far
for i in range(len(myList) - 1):
if myList[i] > myList[i + 1]:
swapped = True # swap occured!
myList[i], myList[i + 1] = myList[i + 1], myList[i]
print(myList)
2条答案
按热度按时间n6lpvg4x1#
Len(mylist)等于5。然而,myList[5]会抛出错误,因为它超出了界限。因为你在倒数第二行的“i”上加1,所以会出现错误。大多数编程语言从0开始计数,直到小于列表长度的1。
von4xj4u2#
使用
range(len(myList) - 1)
,您可以有效地创建range(0,1,2,3)。这可以防止由于myList[i + 1]
而在程序中出现IndexError
,请尝试使用try:
和except:
代码并查找错误名称。