Python modifica el elemento en la lista, vuelve a guardar en la lista

Tengo el presentimiento de que necesito acceder a un elemento en una lista (de cadenas), modificar ese elemento (como una cadena) y volver a colocarlo en la lista en el mismo índice

Tengo dificultades para volver a colocar un artículo en el mismo índice

for item in list: if "foo" in item: item = replace_all(item, replaceDictionary) list[item] = item print item 

ahora me sale un error

 TypeError: list indices must be integers, not str 

debido a esta list[item] = item líneas list[item] = item

lo que tiene sentido! pero no sé cómo volver a colocar el elemento en la lista en ese mismo índice usando Python

¿Cuál es la syntax de esto? Idealmente, el bucle for puede realizar un seguimiento del índice en el que estoy actualmente

Podrías hacer esto:

 for idx, item in enumerate(list): if 'foo' in item: item = replace_all(...) list[idx] = item 

Necesitas usar la función de enumerar: documentos de Python

 for place, item in enumerate(list): if "foo" in item: item = replace_all(item, replaceDictionary) list[place] = item print item 

Además, es una mala idea usar la lista de palabras como una variable, ya que es una palabra reservada en python.

Ya que tuvo problemas con enumerar, una alternativa de la biblioteca de itertools :

 for place, item in itertools.zip(itertools.count(0), list): if "foo" in item: item = replace_all(item, replaceDictionary) list[place] = item print item 

Un modismo común para cambiar todos los elementos de una lista se ve así:

 for i in range(len(L)): item = L[i] # ... compute some result based on item ... L[i] = result 

Esto se puede reescribir usando enumerate () como:

 for i, item in enumerate(L): # ... compute some result based on item ... L[i] = result 

Ver enumerar .