2016-10-26 5 views
2
string = "HELLO" 
print string[::-1] #as expected 
print string[0:6:-1] #empty string why ? 

私は、Pythonで文字列を反転するのが簡単であることに驚きましたが、その後私はこれを打ち負かしました。誰かが第二の逆がうまくいかない理由を説明してもらえますか?リバース文字列Pythonスライス表記

+2

あなたはドキュメントを読みましたか? – BrenBarn

+1

インデックスを逆にしたいと思っています。詳細については、[the documentation](https://docs.python.org/2/tutorial/introduction.html#strings)を参照してください。 '' [14]でパイソン :S = [15]において、 'ハロー' :S [6:0:-1] OUT [15]: 'OLLE' ' – dmcdougall

+0

はい、私がしましたそれを理解できなかったので、誰かが簡単に説明できるかどうかここで尋ねました。私は 'string [begin:end:step]'だけをクリアして、これがうまくいかなかったはずだということになったのですか? – bawejakunal

答えて

1

2番目の文字列が空白の理由は、コンパイラに0から始まり、6で終了し、-1から始まるように指示するためです。

コンパイラは-1に0を繰り返して(0、-1、-2、-3など)繰り返して6より大きい数になることはないため、コンパイラは空の文字列を返すようにプログラムされています。

Try これは、-1から6を繰り返して追加すると、-1(文字列の最後を過ぎて)になるため機能します。

注:これは答えは、主に@dmcdougallをまとめたものです@Ben_Loveと、次のように

0

スライス表記が書かれている、もう少し説明してSundeepのコメント@されています

list_name[start_index: end_index: step_value]

をPythonのリストインデックスは、数字の行にある数字と似ていません。 step_value-1の場合、リストのインデックスは-1stになりません。0thインデックスの後になります。結果は

>>>> print string[0:6:-1]

>>>>

そして

>>>> print string[0::-1]

>>>> H

を生成している故に下に

したがって、start_indexが0の場合、step_valueが-1である-1,2、-3、-4、-5、-6のインデックスを巡回する巡回順序になります。-1です。また

同様

>>>> print string[-1:-6:-1]

>>>> OLLEH

>>>> print string[-1::-1]

>>>> OLLEH

このように、start_indexが-1の場合、-1、-2、-3、-4、-5、-6のインデックスを巡回するように循環順になり、出力OLLEHが得られます。start_indexは6とstep_valueときに理解する

そのかなりまっすぐ進むは-1

>>>> print string[6::-1]

>>>> OLLEH

関連する問題