次のコードを検討してください。
>>> a = [0, 1, 2]
>>> for i in range(len(a)):
>>> print a[0:i]
[]
[0]
[0, 1]
ただし、コードを反転してリストの反対側からスライスを取得すると、機能しなくなります。
>>> for i in range(len(a)):
>>> print a[-i:]
[0, 1, 2]
[2]
[1, 2]
コードの 2 番目の部分を機能させる唯一の方法は、リストを逆にし、最初の方法で実行し、印刷する前に各部分を逆にすることです。これを行うより良い方法はありますか?私はこのタイプのループを時々使用しますが、コードをできるだけクリーンにしたいと考えています。
編集:両方のループで、左から右に繰り返しています。2 番目のループでも反復の方向を反転すると、機能します。最初のループの反復の方向を反転すると、2 番目のループと同じ問題が発生します。
>>> for i in range(len(a)):
>>> print a[i-1::-1]
[2, 1, 0]
[0]
[1, 0]