3

私は Python の初心者で、非常に興味深いことを知りたいと思っています。

私がこれを持っているとしましょう:

s = "hello"

それで:

s[1:4]意味のある「ell」を出力します...そして、s[3:-1]は「l」だけを出力しますが、それも意味があります..

しかし!

s[-1:3]これは同じ範囲ですが、後方に空の文字列 ''... と s[1:10] を返すかs[1:-20]、まったくエラーをスローしていません..どちらが..私の観点からは、エラーが発生するはずですよね? 典型的な範囲外エラー.. :S

私の結論は、範囲は常に左から右であるということです。これが私の言っているとおりかどうか、コミュニティに確認したいと思います。

ありがとう!

4

2 に答える 2

3

s[-1:3]その範囲には何もないため、空の文字列を返します。最後の文字から右に移動して 3 文字目までの範囲を要求していますが、最後の文字はすでに 3 文字目を超えています。

デフォルトでは、範囲は左から右です。

ステップを逆にしたり、サイズを変更したりできる拡張スライスがあります。したがってs[-1:3:-1]、「o」のみが表示されます。そのスライスの最後の -1 は、スライスが右から左に移動する必要があることを示しています。

文字列に含まれていない範囲を要求しても、スライスはエラーをスローしません。それらの位置に対して空の文字列を返すだけです。

于 2013-09-24T15:26:55.507 に答える