こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

回答受付中の質問

pythonの文字列のインデックスについて

s='あいうえお'
x=s[1:2:1]
print(x)

開始インデックス1、終了インデックス2、ステップ1です。
この結果は"い”となります。あいうえお = 0 1 2 3 4 なのでs[1:..]が”い”に相当するのは分かります。s[1:2:..]の2はどういう風に解釈するのでしょうか。
簡単なはずなのですが混乱してしまいました。よろしくお願いします。

投稿日時 - 2018-11-08 16:18:16

QNo.9555799

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

質問自体より既出の回答の返信内容を見ていると、
>簡単なはずなのですが
と感じているのにちょっとビックリです。

正直返信内容を見ていたら
「いっそPythonの開発者にどうしてそうなるように作ったのか!」と
聞いてみる方が早いのでは?と感じましたね。
開発されている状況に応じてそれを身につけ組んでいくしか一般的な人はやるしかない
と改めて感じさせられました。
どうしてもその部分を仕様として覚えるのではなく、どうしてそのような仕様になったのかを知るとしたら、答えられるのはやっぱ開発元になるのではないでしょうか?

投稿日時 - 2018-11-13 22:05:21

ANo.4

qzl

もう私の回答に対して返答するの辞めてくださいね

投稿日時 - 2018-11-12 14:04:49

ANo.3

qzl

1+1が2になる理由が解りません、この証明方法を教えてくださいなんてことを今調べてたらキリがなくなります

もう少し掘り下げてプログラミングを理解したいという話ならPythonより多くの関数を自力で作らなければいけないC言語とかのほうが良いと思いますけどね
C言語では文字列を配列として扱うことになるのでPythonでいうところのスライスの仕組みが少しは理解できるでしょうね。

投稿日時 - 2018-11-12 14:02:20

ANo.2

qzl

お礼拝見しました
あれこれ試してご自身で検証するということをまったくしないのですね

投稿日時 - 2018-11-10 13:50:57

お礼

ご指摘ありがとうございます。
実際の動作の確認はとれるのですが、理解の方法がわからないという質問なのです。あれこれ試して実際にそうなっているのだからそれを丸呑みせよ、という方法もあるでしょうけれど。実際の動作確認というのであればこの質問の前にたっぷりやっており、どう理解したらよいかわからないということが質問の主旨なのですが。

投稿日時 - 2018-11-10 19:26:33

ANo.1

qzl

1から1(間隔)ずつ2番目までです

x[1:4:2]とやれば"いえ"となり
1から1つ飛ばし(2間隔)で4番目までと分かりやすいと思います

スライスのいろいろです、文字列と配列は同じ理屈ですので以下を参考にどうぞ
#以降は出力結果です

num = [40, 50, 60, 70, 80, 90]
num[1:4] # [50, 60, 70]
num[:2] # [40, 50]
num[:-1] # [40, 50, 60, 70, 80]
num[3:] # [70, 80, 90]
num[-3:] # [70, 80, 90]
num[::2] # [40, 60, 80]
num[::-2] # [90, 70, 50]
num[::-1] # [90, 80, 70, 60, 50, 40]
num[-2::-1] # [80, 70, 60, 50, 40]
num[0:5:2] # [40, 60, 80]

投稿日時 - 2018-11-08 16:38:38

お礼

回答ありがとうございます。確認です。
x[1:4:2] は1から2間隔で4番目まで、ということなので、
x[l:m:n] はlからn間隔でm番目まで、という一般化でいいでしょうか。
文字列を配列番号0から始まる数で標記してその数をインデックスとします。
この”m番目”ですが、インデックスとしてはm-1ということになるので、
番目をなくしてインデックスで標記すると、
x[l:m:n] はインデックスlからインデックスm-1までn間隔でという理解なのですが。ただし、そうすると負のインデックスはないのでそこはどうするかという問題は残りますが。nについて負だったら逆に戻ると解釈すると。l,mが負ってどういうことなのかという疑問が残ります。どう考えるのでしょうか。

投稿日時 - 2018-11-08 18:25:40

あなたにオススメの質問