Python: clonar lista y eliminar referencia

Este post trata sobre el lenguaje de programación Python. Vamos a ver cómo copiar un arreglo pero eliminando la referencia; de este modo al modificar el arreglo A no vamos a modificar sin querer al arreglo B.

Esto también es conocido como clonar un arreglo o clonar una lista en Python.

Nota: con lista también me refiero a arreglo, array, vector, como lo conozcas.

Arreglo de una dimensión

Para una lista de una dimensión lo único que tenemos que hacer es usar operaciones de listas por ejemplo:

lista = lista_original[:]

Veamos un ejemplo en donde se demuestra que al modificar una lista no se está modificando a la otra:

lista = [1, 2, 3]
otra_lista = lista[:]
print("lista:")
print(lista)
print("otra_lista:")
print(otra_lista)

# Modificar a lista
print("Modificando...")
otra_lista[0] = 4

# Y al imprimir, no debería haber modificado a "lista"

print("lista:")
print(lista)
print("otra_lista:")
print(otra_lista)

Lista de dos dimensiones

Para copiar una lista que tiene dos dimensiones (por ejemplo una matriz) podemos usar a la función deepcopy (copia en profundidad) presente dentro de copy.

Primero la importamos.

from copy import deepcopy

Después obtenemos una copia del arreglo con:

copia = deepcopy(original)

Algo así:

from copy import deepcopy

lista = [
    [1, 2],
    [3, 4],
]
otra_lista = deepcopy(lista)
print("lista:")
print(lista)
print("otra_lista:")
print(otra_lista)

# Modificar a lista
print("Modificando...")
otra_lista[0][0] = 4

# Y al imprimir, no debería haber modificado a "lista"

print("lista:")
print(lista)
print("otra_lista:")
print(otra_lista)

De este modo la copia se realiza en profundidad y elimina las referencias, de modo que al modificar una lista o pasarla a una función, si se modifica dentro de la misma, no surtirá efecto en la original.

Conclusión

Como puedes ver estas técnicas van a evitar que al modificar un arreglo copia, modifiques sin querer al original. Esto sirve para cuando queremos crear una copia de la lista sin modificar la original; por ejemplo al pasarla como argumento en una función.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *