2011-10-05 11 views
7

は、単語「インターネット」に「E」私は手紙の各インデックスを見つける必要があるとします検索インデックスは

letter = 'e' 
word = 'internet' 
idx = word.index(letter) 

しかし、このコードは、最初のインデックスを提供します。残りの部分はどのようにして見つけることができますか?

+2

という言葉は '、 'STRING'ではありませんリスト。 – Johnsyweb

+0

好奇心が私に聞かせてくれます。なぜインデックスを使いたいのですか? –

+1

はい、私の間違いです。もちろんストリングです...私はハングマンゲームをコーディングしています。 – markiisi

答えて

6

Mark's answerは、単一の文字のためのより良いです。実際の部分文字列が1文字よりも長い場合には、これを追加します。

あなたがstr.index()を使用したい場合は、オプションのstart位置を取ることができ、目的の部分文字列が見つからない場合ValueErrorraiseます:ここでもちろん

>>> letter = 'e' 
>>> word = 'internet' 
>>> last_index = -1 
>>> while True: 
...  try: 
...   last_index = word.index(letter, last_index + 1) 
...   print last_index 
...  except ValueError: 
...   break 
... 
3 
6 
+2

これを使うつもりなら、それをインデックスを生成するジェネレータ関数に張り付けることをお勧めします。 – yak

+0

@yak:かなり同意します。私はちょうど基本的な例を与えていた。 – Johnsyweb

13

list comprehensionenumerateを使用してみてください:

[index for (index, letter) in enumerate(word) if letter == 'e'] 
0

はこれを試してみてください:

word = 'internet' 
letter = 'e' 
[i for i in xrange(len(word)) if word[i] == letter] 
関連する問題