誰かが理由を説明できますかa[:5:-1] != a[:5][::-1]
?どのように否定的なkのインデックスを持つPythonのスライスを理解するには?
>>> a = range(10)
>>> a[:5][::-1]
[4, 3, 2, 1, 0]
>>> a[:5:-1]
[9, 8, 7, 6]
誰かが理由を説明できますかa[:5:-1] != a[:5][::-1]
?どのように否定的なkのインデックスを持つPythonのスライスを理解するには?
>>> a = range(10)
>>> a[:5][::-1]
[4, 3, 2, 1, 0]
>>> a[:5:-1]
[9, 8, 7, 6]
スライシングの一般的な構文は次の3つの値start
、stop
、またはstep
のいずれかを省略することができます
a[start:stop:step]
です。 step
を省略すると、デフォルト値は常に1
になります。 start
とstop
のデフォルト値は、対照的に、step
の符号に依存:step
はstart
0
デフォルトとlen(a)
からstop
、肯定的である場合。 step
は、「リストの先頭」にlen(a) - 1
とstop
からstart
デフォルト、負の場合。
a[:5][::-1]
がa[0:5][4::-1]
と同じである一方、そうa[:5:-1]
はここa[9:5:-1]
、
と同じです。
(それはstep
が負の場合。ストップ値は、非包括的であるので、0
は「リストの先頭」とは異なるだろう明示的にstop
のデフォルト値を与えることは不可能だということに注意してください。None
を使用して与えることに相当します値はまったくありません)。
何a[:5][::-1]
プログラムは、まずデータセットの第五要素までの要素を取り、その後、(最後の1から始まる一つ一つの要素を取る)、それらを逆にすべきであるということであると言います。
これとは対照的に、a[:5:-1]
では、最後の要素から始まる5番目の要素まで(最後の要素から始まるすべての要素を取ります)、要素を取得する必要があります。
[:5]はインデックス0から4までの配列を返し、2番目の操作として負のインデックスを作成します。 a [:5:-1]は元の配列を負の値にします。
のように見えます::降順で動作します。ただの推測 – ControlAltDel