どこかに向かうらしい話

迷走エンジニアの放浪記

スライスと逆順が同時に使うとき気をつけないといけない件

Python3の話。

文字列sの3文字目から5文字目までの部分文字列は、スライスを用いてs[2:5]で取得が可能。
文字列sの逆の文字列は、s[::-1]で取得が可能。

文字列sの2文字目から4文字目までの部分文字列を取得し、その取得した部分文字列の逆の文字列は、スライスを用いてs[2:5:-1]で取得ができそうだが、結果は''となってしまい、うまくいかない。
実際はs[2:5][::-1]s[4:1:-1]で取得することが可能。
以下のサンプルを見れば、なんとなく理解できるかと思われる。

>>> s = "abcdefg"

>>> s[2:5]
'cde'
>>> s[2:5:-1]
''
>>> s[2:5][::-1]
'edc'
>>> s[4:1:-1]
'edc'