5
for iteration in range(len(list) - 1):
  index = iteration +1 #This is the line which has no effect on the inner loop
  for index in range(len(list)):
    if list[iteration] > list[index]:
      newmin  = list[index]
      newminindex = index        
  if iteration != newminindex :
    swapnumbers(list,iteration, newminindex)

上記は、選択ソート アルゴリズム用に作成したコード スニペットです。ただし、内側のループ開始カウンターは常に 0 から始まります。専門家のコメントを求めます。

4

5 に答える 5

9

ループは、最初に に設定されたfor index in range(len(list))ループ本体を実行します。の以前の値は無視され、上書きされます。から開始する場合は、2 引数形式の を使用します。index012len(list) - 1indexindexiteration + 1range

for index in range(iteration + 1, len(list)):
于 2013-07-06T00:27:49.667 に答える
3

enumerateインデックスと値を同時にループできるため、このようなものを実際に使用する必要があります (これにより、2 つの for ループを使用する手間が省けます)。

for i, j in enumerate(list):
    print i, j

内側のループはindex、最初のループで定義した変数をオーバーライドしています。

于 2013-07-06T00:28:18.260 に答える
1

代わりにこれを試してください:

for index in range(iteration + 1, len(l)):  # don't use "list" as a name

indexとにかくループ内で再割り当てされているforためindex = iteration + 1、効果はありません。

于 2013-07-06T00:27:09.553 に答える
0
for index in range(iteration + 1, len(list))
于 2013-07-06T00:26:42.567 に答える