digamos que tengo una lista¿Cómo puedo operar en el objeto real, no en una copia, en un bucle pitón?
a = [1,2,3]
Me gustaría incrementar cada elemento de la lista en su lugar. Quiero hacer algo tan sencillo como sintácticamente
for item in a:
item += 1
pero en ese ejemplo Python usa sólo el valor de item
, no su referencia real, así que cuando he terminado con ese bucle a
sigue devolviendo [1,2, 3] en lugar de [2,3,4]. Sé que podría hacer algo como
a = map(lambda x:x+1, a)
pero que no encaja realmente en mi código actual y me gustaría tener que volver a escribir que: - \
El bucle for realmente le da el objeto real, no copias. El caso es que estás usando números. Los números (y las cadenas), como todos los valores de Python, son objetos, pero cada literal se refiere a una instancia única. Entonces, si pudieras modificar una instancia que representara de 1 a 2, terminarías cambiando todos los 1 a 2, lo que mataría. La alternativa, tener una instancia para cada valor no sería factible. Intente jugar con la función id: id (1), id ('hello world'), etc. (siempre devuelve la misma dirección para los mismos literales.) – Blixt