python 为什么列表的长度必须包含-1才能在for循环中容纳+1?

rqqzpn5f  于 2023-04-19  发布在  Python
关注(0)|答案(2)|浏览(165)

我正在做一个在线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)
n6lpvg4x

n6lpvg4x1#

Len(mylist)等于5。然而,myList[5]会抛出错误,因为它超出了界限。因为你在倒数第二行的“i”上加1,所以会出现错误。大多数编程语言从0开始计数,直到小于列表长度的1。

von4xj4u

von4xj4u2#

使用range(len(myList) - 1),您可以有效地创建range(0,1,2,3)。这可以防止由于myList[i + 1]而在程序中出现IndexError,请尝试使用try:except:代码并查找错误名称。

相关问题