以下の動作を理解しようとしており、(特に公式ドキュメントの場合)またはコメントを歓迎します。リストスライシングでの否定的なステップの理解
>>> x[0:-4:-1]
[]
は結果的に、私は次のよう驚い:
これは>>> x[-1:-4:-1]
[6, 5, 4]
を期待しかし、私は次驚いとして働く
>>> x = [1,2,3,4,5,6]
は空です:
のリストを考えてみましょう空ではない
>>> x[0:-len(x)-1:-1]
> [1]
特に
>>> x[0:-len(x)-1]
[]
が空であることを
>>> x[0:-len(x):-1]
[]
とともにことを考えます。
答えをいただきありがとうございますが、私はまだそれを取得しません。 -len(x)-1が-1に解決されると書いています。あなたは-1に解決する方法と、なぜなら私にとっては-len(x)-1が-7に等しいと思われるので、それを詳しく教えてください。それは、x [0] == x [-len(x)]という事実に関連していますか? – ffc
うん。シーケンス 'seq'上のインデックスまたはスライス・パラメータとして使用される任意の負の数' -i'は、実際のインデックス 'len(seq)-i'に解決されます。したがって、長さ '6 'の' list'の場合、l [0:-7:-1]は、後方ステップの '0'から' -1'( '6 - 7')までのスライスです。最初の要素(インデックス '0')を含む後方スライスの場合、' end <-len(seq) 'を選択するか、空にしておかなければなりません:' seq [start :: - 1] '! – schwobaseggl