2011-10-05 13 views
7

Supongamos que tengo que encontrar cada índice de la letra 'E' en la palabra "Internet":índice Hallazgo de los mismos elementos en una lista

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

Pero este código da sólo el primer índice. ¿Cómo puedo encontrar el resto de ellos?

+2

Por supuesto 'palabra' aquí es un 'string', no una 'lista'. – Johnsyweb

+0

La curiosidad me obliga a preguntar, ¿por qué quieres los índices? –

+1

Sí, mi error. Por supuesto, una cadena ... Estoy codificando el juego del ahorcado. – markiisi

Respuesta

6

Mark's answer es mejor para una sola letra. Estoy agregando esto en caso de que su subserie real sea más larga que un solo carácter.

Si desea utilizar str.index(), puede tomar una posición opcional start y tendrá un raiseValueError si no se encuentra la subcadena deseada:

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

Si va a usar esto, le sugiero que lo incluya en una función de generador que proporcione los índices. – yak

+0

@yak: bastante de acuerdo. Solo estaba dando un ejemplo básico. – Johnsyweb

0

Prueba esto:

word = 'internet' 
letter = 'e' 
[i for i in xrange(len(word)) if word[i] == letter] 
Cuestiones relacionadas