- 締切済み
pythonの文字列のインデックスについて
s='あいうえお' x=s[1:2:1] print(x) 開始インデックス1、終了インデックス2、ステップ1です。 この結果は"い”となります。あいうえお = 0 1 2 3 4 なのでs[1:..]が”い”に相当するのは分かります。s[1:2:..]の2はどういう風に解釈するのでしょうか。 簡単なはずなのですが混乱してしまいました。よろしくお願いします。
s='あいうえお' x=s[1:2:1] print(x) 開始インデックス1、終了インデックス2、ステップ1です。 この結果は"い”となります。あいうえお = 0 1 2 3 4 なのでs[1:..]が”い”に相当するのは分かります。s[1:2:..]の2はどういう風に解釈するのでしょうか。 簡単なはずなのですが混乱してしまいました。よろしくお願いします。
お礼
回答ありがとうございます。プログラム言語も言語なのでなぜ、そうなるのかを問うことはできない、なぜ鉛筆をpencilというのか問うことはできない、ということと同値である、ということなのでしょうか。鎌倉幕府が1192年というのも”なぜ”はほぼ受け付けません。これらは事実を飲み込むしか仕方がありません。そういうことなのでしょうか。 しかし、機能を定式化(パターン化)することはできるのではないかと思っています。覚え方と言ってもいいのかもしれません。実験=帰納的であり(事実を飲み込む)、定式化(パターン化)=演繹的です。 s='あいうえお' x=s[i:j:k] この時に右辺を関数で表示するとどうなるのかということなのですが。実例を示すことではなく。 もし無理やり解釈するなら以下の通りです。(多分違うだろうと思いますが、関数を言葉で表示しているつもりです。こういうことを確認したいということなのですが) --- s[1:2:1]では、文字列sのインデックス1から文字列の最初からの2個目までを1つづつ示すという意味である。 s='あいうえお'に当てはめると文字列sのインデックス1は'い'であり、先頭から2個目はすなわち'い'となり、そこまで飛び0で出すのだから結局'い'のみとなる。 ということは、s[i:j:k]とは文字列sのインデックスiから文字列の個数jまでを(k-1)個飛びに取り出すということである。 ※なおインデックスはゼロから始まるが、個数は1から始まる。 ※この解釈ならi,j,kは正の整数のみでしか成立しません。負の場合は別途定義しなおす? ---