その結果
def reverse(list):
"""Reverses elements of a list."""
for i in range(len(list)/2):
j = i + 1
x = list[i]
y = list[-j]
list[-j] = x
list[i] = y
l = ['a', 'b', 'c', 'd', 'e']
l=reverse(l)
print(l)
。最初の問題はlist[j-1] = x
の代わりにlist[j] = y
を使用することです。 y
をj-1
で正しく定義しましたが、list[j-1]
をもう一方のx
に変更する必要があります。もう一つの問題は、あなたがリストの始めから最後まで行くことです。リストの半分以上に達すると、あなたはあなたの仕事を元に戻します。また、-i
を使用できるので、len(list)-i
を使用する必要はありません。ここで更新されたコードです:
def reverse(seq):
"""Reverses elements of a list."""
for i in range(len(seq)//2):
x = seq[i]
y = seq[-i-1]
seq[i] = y
seq[-i-1] = x
l = ['a', 'b', 'c', 'd', 'e']
reverse(l)
print(l)
出力:あなたもx
とy
を定義する必要はありません
['e', 'd', 'c', 'b', 'a']
。代わりに、次のようにしてください:
def reverse(seq):
"""Reverses elements of a list."""
for i in range(len(list)//2):
seq[i], seq[-i-1] = seq[-i-1], seq[i]
名前を変更しました。おそらくseq
よりも優れた名前がありますが、list
は組み込み型と競合するため使用できません。
コードを理解していますか?あなたはどの2つの要素を交換しているのかを見てみてください...それは明らかです。また、各要素を何回交換しているかについても注意してください(古いLaurelとHardyのコメディがこの要素を見つけるのを助けるかもしれません)。 – Amadan
'mylist [:: - 1]'の何が問題なのですか? – Evert
@Evert:宿題をデバッグしていると仮定します。要点はリストの逆転を書くことではなく、誤った論理を見つけることです。 – Amadan