Cambiar el valor del elemento iterado actualmente en la lista

problema: cuando usas la construcción

for a in _list_: print a 

imprime cada elemento en la matriz. Pero no puedes alterar la matriz. ¿Es posible alterar el valor de la matriz (algo como a = 123, pero eso no funciona) Sé que es posible (por ejemplo, en el bucle while), pero quiero hacerlo de esta manera (más elegante)

En PHP seria como

 foreach ($array as &$value) { $value = 123; } 

(Debido a & sign, se pasa como referencia)

 for idx, a in enumerate(foo): foo[idx] = a + 42 

Sin embargo, tenga en cuenta que si está haciendo esto, probablemente debería buscar en las listas de comprensión (o map ), a menos que realmente desee mutar en su lugar (simplemente no inserte ni elimine elementos de la lista de iterados).

El mismo bucle escrito como una lista de comprensión se ve así:

 foo = [a + 42 for a in foo] 

Debido a que los iteradores de Python son solo una “etiqueta” para un objeto en la memoria, configurarlo hará que apunte a otra cosa.

Si el iterador es un objeto mutable (lista, conjunto, dict, etc.), puede modificarlo y ver el resultado en el mismo objeto.

 >>> a = [[1,2,3], [4,5,6]] >>> for i in a: ... i.append(10) >>> a [[1, 2, 3, 10], [4, 5, 6, 10]] 

Si desea establecer cada valor en, digamos, 123, puede usar el índice de la lista y acceder a él o usar una lista de comprensión :

 >>> a = [1,2,3,4,5] >>> a = [123 for i in a] >>> a [123, 123, 123, 123, 123] 

Pero estarás creando otra lista y enlazándola al mismo nombre.