我是Python新手。我们如何逐步解释这个代码。我无法理解某些部分。
myList=[43,21,12,80,3,2,35]
end=len(myList)-1
while (end!=-1):
swapped=-1
for i in range(0,end):
if myList[i]>myList[i+1]:
temp=myList[i]
myList[i]=myList[i+1]
myList[i+1]=temp
swapped=i
end=swapped
print(myList)
答案 0 :(得分:1)
使用while True
会创建无限循环如果您忘记添加会破坏循环的代码。在这种情况下,只有在for循环结束时swapped
仍为-1时才会发生中断。因此,以下代码:
myList=[43,21,12,80,3,2,35]
end=len(myList)-1
while True:
swapped=-1
for i in range(0,end):
if myList[i]>myList[i+1]:
temp=myList[i]
myList[i]=myList[i+1]
myList[i+1]=temp
swapped=i
if swapped == -1:
break
print(myList)
如果计算此示例的行数并将其与原始行进行比较,则会看到原始行短一行。
在我看来,检查值是比使用while True:
(或while False:
更好的工作方式)。
答案 1 :(得分:1)
我认为你的所有问题都已得到解答(他们在(真)=无限循环时)和交换的行为被排序'标志。
在python中非常酷的一件事是你不需要像在c中那样使用临时变量,所以你可以将if语句改为:
if myList[i]>myList[i+1]:
myList[i+1], myList[i] = myList[i], myList[i+1]
swapped=i
或
if myList[i]>myList[i+1]:
j = i + 1
myList[j], myList[i] = myList[i], myList[j]
swapped=i
如果您不想两次计算i + 1
还要注意range(0,-1)返回一个空列表而不是抛出异常