"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Por qué la asignación de una lista a una nueva variable en Python no crea una copia separada?

¿Por qué la asignación de una lista a una nueva variable en Python no crea una copia separada?

Publicado el 2024-11-10
Navegar:319

Why does assigning a list to a new variable in Python not create a separate copy?

Mutación de lista inesperada

Al crear una lista como v = [0,0,0,0,0,0,0,0 ,0], podría asumir que asignar una nueva lista a una variable crea una referencia separada. Sin embargo, código como el siguiente puede demostrar un comportamiento inesperado:

vec = v
vec[5] = 5

Tanto vec como v ahora contienen el valor 5 en el índice 5. ¿Por qué sucede esto?

Asignación de referencia

En Python, las listas son objetos mutables. Asignar vec = v no crea una nueva copia de la lista. En su lugar, asigna una referencia a v. Tanto vec como v apuntan al mismo objeto de lista subyacente en la memoria.

Cualquier modificación realizada en vec o v afectará la lista original porque son la misma lista. Es por eso que cuando se cambia vec[5], v también cambia.

Solución

Para crear una copia separada de la lista, use la función list():

vec = list(v)

Esto crea un nuevo objeto de lista que contiene una copia de los elementos de v. Cualquier cambio realizado en vec no afectará a v, y viceversa. .

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3