es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Entendiendo la referencia compartida para listas y tuplas.

Tengo objetos de lista a y b que se ven así:

a = [1, 2, 3]
b = [1, 2, 3]
print(id(a))
print(id(b))

Salida1:

1549645638528
1549650497792

De manera similar, tengo objetos de tupla a1 y b1 que se ven así:

a1 = (1, 2, 3)
b1 = (1, 2, 3)
print(id(a1))
print(id(b1))

Salida2:

1549643421120
1549643421120

Por favor ayúdeme a entender por qué a1 y b1 se refieren a la misma ubicación de memoria.

¿Y por qué a y b apuntan a diferentes ubicaciones de memoria?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    En Python, los objetos de lista son mutables, es decir, pueden cambiarse después de su creación, mientras que los objetos de tupla son inmutables, es decir, no se pueden cambiar después de su creación. Cuando creamos un nuevo objeto de lista, Python crea un nuevo bloque de memoria para almacenarlo. Por lo tanto, cuando creamos objetos de lista a y b, Python crea dos bloques de memoria diferentes para almacenarlos y, por lo tanto, tienen diferentes ubicaciones de memoria.

    Por otro lado, cuando creamos objetos de tupla a1 y b1, Python crea un nuevo bloque de memoria para almacenar a1. Pero en lugar de crear un nuevo bloque de memoria para b1, Python simplemente apunta b1 a la misma ubicación de memoria que a1. Esto se debe a que las tuplas son inmutables y Python sabe que el contenido de a1 no puede ser cambiado. Por lo tanto, no hay necesidad de crear un nuevo bloque de memoria para b1 y simplemente puede apuntar a la misma ubicación de memoria que a1.

    Este comportamiento se conoce como internsión, que es el proceso automático de almacenar objetos inmutables en memoria para reutilizarlos. Esto ayuda a reducir el uso de memoria y mejorar el rendimiento.

Comments are closed.