質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

1210閲覧

Pythonの文字列のindexが正しく表示されない

pockygame

総合スコア17

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/03/14 13:26

調べても分からず困っておりまして、どなたかお教えいただけますと助かります。

以下のようなコードを書きました。

Python

1text = "文字列の index をカウントしようとすると 変なことになる" 2for t in text: 3 print(text.index(t))

0から順に数字が並ぶコードをイメージして書いたのですが、結果は、

0 1 ...(長いので一部略。ここは正しく出ました。) 19 20 21 19 4 24 25 26 19 28 25 21

このような結果が返ってきました。
これはPythonの仕様なのでしょうか?

どなたかお教えいただけますと幸いです。
よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

indexは、見つかった最初の要素のインデックスを返します。
たとえば'bcaaaaa'.index('a')は何十回実行しようが 2 です。

添え字を取得しながらループを巡回したい場合、enumerateがよく使われます。

Python

1s = 'abcabc' 2for i, ch in enumerate(s): 3 print(i, ch, s.index(ch)) 4 5"""実行結果 60 a 0 71 b 1 82 c 2 93 a 0 104 b 1 115 c 2 12"""

投稿2018/03/14 13:33

編集2018/03/14 13:36
LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pockygame

2018/03/14 15:47

ご丁寧に回答いただきありがとうございました! 恥ずかしいカン違いをしていましたが、ハマって抜け出せていなかったのでとても助かりました。 ありがとうございます!
guest

0

0~21まできて、もし順番通りになるなら22がくるはずですが、
22に当たる文字は”と”です。”と”がこの文字列に出てくるのは2回目で最初に出てきたのは19番目に当たります。
その次の23にあたる文字は” ”半角スペースです。半角スペースも2回目なので、最初の4番目の数字がプリントされます

ですので0~21、19、4とプリントされます。

この様な式で書くとわかりやすいかもしれません

python

1text = "あいうえおあいおうえおあいうえお" 2for t in text: 3 print(text.index(t)) 4 50 61 72 83 94 100 111 124 132 143 154 160 171 182 193 204 21

投稿2018/03/14 15:48

grilled_python

総合スコア237

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pockygame

2018/03/14 15:49

ご丁寧に回答いただきありがとうございます! indexの仕様をカン違いしてしまっておりました。ハマってしまっていたので大変助かります。 ありがとうございます。
guest

0

もっと単純にtext="aba"に対してやってみてその結果を落ち着いてよく眺めれば「あ、そうか」と納得できる気がするのですが・・・

投稿2018/03/14 13:34

KSwordOfHaste

総合スコア18394

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pockygame

2018/03/14 15:48

おっしゃる通りですね。。。 今度からもう少し冷静になります。。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問