2011-10-05 4 views
7

가정하자 나는 단어 "인터넷"에 문자 'E'의 각 인덱스를 찾을 수있다 :찾기 지수는

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

하지만이 코드는 첫 번째 인덱스를 제공합니다. 나머지는 어떻게 찾을 수 있습니까? list comprehensionenumerate를 사용

+2

는'string' 아니다 'list'. – Johnsyweb

+0

호기심이 묻습니다. 왜 색인을 원하니? –

+1

네, 저의 실수입니다. 물론 문자열입니다 ... 행맨 게임을 코딩하고 있습니다. – markiisi

답변

6

Mark's answer는 하나의 문자에 좋습니다. 실제 하위 문자열이 단일 문자보다 긴 경우에 대비하여 추가하고 있습니다.

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

시도 :

[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]