【发布时间】:2021-09-26 14:25:48
【问题描述】:
我有一个代码:
l = [5, 8, 1, 3, 2]
still_swapping = True
while still_swapping:
still_swapping = False
for i in range(len(l)):
print(l[i], i)
if l[i] > l[i+1]:
l[i], l[i+1] = l[i+1], l[i]
still_swapping = True
print(l)
而且,我有输出:
if l[i] > l[i+1]:
IndexError: list index out of range
我不明白为什么它超出了范围。请大家帮帮我好吗?
【问题讨论】:
-
你在做
for i in range(len(l)),所以i总是在列表的范围内,但i+1不在。 -
@khelwood 你能详细说明一下吗?
-
OK...好吧
i上升到列表中的最后一个位置。此时,显然i+1已超过列表的末尾。所以没有l[i+1]这样的元素。 -
所以,它试图找到一个不存在的元素,但是我该如何解决这个问题呢?如何停止搜索?
-
您可以减少范围的上限。这样可以避免异常。
标签: python bubble-sort