-3

私は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)
4

2 に答える 2

1

私はあなたのすべての質問が答えられたと思います(それらはwhile(True)=無限ループです)そしてその交換は'ソートされた'フラグとして機能します。

Pythonで非常に優れている点の1つは、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を2回計算したくない場合

また、range(0、-1)は、例外を発生させるのではなく、空のリストを返すことに注意してください。

于 2012-12-03T13:16:59.353 に答える
1

ループを壊すコードを追加するのを忘れた場合、使用while Trueすると無限ループが作成されます。この場合、ブレークはfor ループの最後でまだ -1 の場合にのみ発生します。したがって、次のコード:swapped

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)

この例の行数を数えてオリジナルと比較すると、オリジナルの方が 1 行短いことがわかります。そして、私の意見では、値をチェックすることは、使用するよりもwhile True:(またはwhile False:その点で)より良い作業方法です。

于 2012-12-03T13:06:26.043 に答える