2

私はPythonを初めて使用します。単純なリストスライス操作から取得した次の出力は、私を困惑させました。

これがコードです。

>>> a = [1,2,3,4];
>>> a[1:3]
[2, 3]

>>> a[3]
4

の代わりにa[1:3]返すべきではありませんか?[2,3,4][2,3]

4

4 に答える 4

9

a[1:3]半閉区間を指定します。これは、最初に指定されたインデックスから始まり、2 番目のインデックスの まで値を含むことを意味ます

したがって、この場合a[1:3]、スライスにはa[1]a[2]が含まれますが、含まれないことを意味します a[3]

range()関数の使用でも同じことがわかります。例えば

 range(1, 5)

1 から 4 までのリストを生成しますが、5 は含まれません

これは、多くのプログラミング言語での処理方法とほぼ一致しています。

于 2012-07-09T21:05:53.170 に答える
1

スライスのドキュメントが役立つ場合があります。

slave([start]、stop [、step])
で指定されたインデックスのセットを表すスライスオブジェクトを返しますrange(start, stop, step)

ほとんどの人が精通しているスライス形式は、単なる省略形です。

a[start:stop:step] 
于 2012-07-09T21:12:05.347 に答える
1

スライスは、2 番目のスライス インデックスまで (ただし、それを含まない) を返します。

于 2012-07-09T21:06:07.943 に答える
0

あなたはそれがどのように機能するかについていくつかの良い答えを持っています.ここに理由があります:

= '0123456789' a[2:4] '23' a[4:6] '45' a[6:8] '67'

IOW、ほとんどの言語で必要な +1 / -1 のものに時間を無駄にすることなく、一度に n 文字のリスト、文字列、またはタプルを簡単にステップスルーできます。

于 2012-07-09T21:52:47.457 に答える