3

このコード行

print [0, 1, 2, 3, 4][0:1:1]

戻ります[0]

ただし、次のコード行:

print [0, 1, 2, 3, 4][0:0:1]

戻ります[]

どうしてこれなの?このExplain Python's slice notationに基づいて、私の理解では、形式は次のようになります。

a[start:end:step] # start through not past end, by step

[0, 1, 2, 3, 4][0:0:1]したがって、0 番目の値で開始および終了するべきではありません[0]

4

3 に答える 3

6

スライスの「終了」インデックスは常に結果から除外されます。つまり、すべての場所をlisty[start:end]返します( の代わりに を使用することに注意してください)。のような数はないので、は常に空のリスト (またはエラー) になります。listy[i]start <= i < end<<=i0 <= i < 0listy[0:0:anything]

于 2013-10-27T02:17:33.107 に答える
2

Python のスライス表記の終了インデックスは排他的です。のスライスは[n:m]、インデックスが >= n かつ < m であるすべての要素を返します。

少し単純化するために、ステップなしで試してください (ステップ値が 1 の場合は必要ありません)。

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

原則として、スライス内の要素の数は、スライスの開始インデックスからスライスの終了インデックスを引いたものに等しくなります。つまり、スライス[n:m]は mn 個の要素を返します。[0:1]これは、 によって返される 1 つの要素 (1-0)と によって返されるゼロ要素 (0-0) に一致し[0:0]ます。

(スライス インデックスのいずれかが配列のサイズの外側にある場合、これは当てはまらないことに注意してください。)

スライス インデックスがどのように機能するかをわかりやすく視覚化するには、 http://docs.python.org/2/tutorial/introduction.htmlで「スライスの仕組みを覚える方法」を検索してください。

于 2013-10-27T02:22:42.133 に答える
1

[0:0:1]ではないことに注意してください[0:1:1]

そう:

start = 0
end = 0
step = 1

スライスは、特定の範囲内[start:end:step]の値を返すことを意味するため、例では次のようになります。startend - 1step

...[0:0:1]

0 から -1 の間の値なので、何も返されません。

于 2013-10-27T02:13:07.763 に答える