私はPythonを初めて使用します。単純なリストスライス操作から取得した次の出力は、私を困惑させました。
これがコードです。
>>> a = [1,2,3,4];
>>> a[1:3]
[2, 3]
>>> a[3]
4
の代わりにa[1:3]
返すべきではありませんか?[2,3,4]
[2,3]
a[1:3]
半閉区間を指定します。これは、最初に指定されたインデックスから始まり、2 番目のインデックスの までの値を含むことを意味します。
したがって、この場合a[1:3]
、スライスにはa[1]
とa[2]
が含まれますが、含まれないことを意味します a[3]
range()関数の使用でも同じことがわかります。例えば
range(1, 5)
1 から 4 までのリストを生成しますが、5 は含まれません。
これは、多くのプログラミング言語での処理方法とほぼ一致しています。
スライスのドキュメントが役立つ場合があります。
slave([start]、stop [、step])
で指定されたインデックスのセットを表すスライスオブジェクトを返しますrange(start, stop, step)
。
ほとんどの人が精通しているスライス形式は、単なる省略形です。
a[start:stop:step]
スライスは、2 番目のスライス インデックスまで (ただし、それを含まない) を返します。
あなたはそれがどのように機能するかについていくつかの良い答えを持っています.ここに理由があります:
= '0123456789' a[2:4] '23' a[4:6] '45' a[6:8] '67'
IOW、ほとんどの言語で必要な +1 / -1 のものに時間を無駄にすることなく、一度に n 文字のリスト、文字列、またはタプルを簡単にステップスルーできます。