Copia profunda de una lista en Python

Samyak Jain 30 enero 2023
  1. Utilice la función copy.deepcopy() para realizar una copia profunda de una lista en Python
  2. Use la comprensión de listas para copiar en profundidad una lista en Python
Copia profunda de una lista en Python

Podemos crear copias superficiales y profundas en Python. Una copia profunda de una lista es crear una nueva lista y luego insertar recursivamente en ella las copias de los elementos de la lista original. Se refiere a la clonación de una lista y cualquier cambio realizado en la lista original no afecta a la lista clonada.

Utilice la función copy.deepcopy() para realizar una copia profunda de una lista en Python

La función deepcopy() del módulo copy se utiliza para crear una copia profunda de la lista especificada. Si modificamos esta copia, el contenido de la lista original seguirá siendo el mismo y no se modificará.

Por ejemplo,

import copy

A = [[10, 60], [50, "Hi"], ["Hello", 5, 80]]
B = copy.deepcopy(A)
A[2][0] = "World"
A[0][1] = 10
print("List A is : % s" % (A))
print("List B is : % s" % (B))

Producción :

List A is : [[10, 10], [50, 'Hi'], ['World', 5, 80]]
List B is : [[10, 60], [50, 'Hi'], ['Hello', 5, 80]]

La lista B no se modifica después de que se asigna un nuevo valor en la lista A porque la lista B es una copia en profundidad de la lista A. La lista A y la lista B son independientes entre sí.

Use la comprensión de listas para copiar en profundidad una lista en Python

La comprensión de listas en Python se usa para crear nuevas listas a partir de otros iterables como listas, tuplas, cadenas y más. La comprensión de listas hace que el código sea simple y eficiente.

Básicamente haremos lo que hace la función deepcopy() y crearemos de forma recursiva una nueva copia de la lista dada en este método.

Por ejemplo,

A = [2, 4, 6, 8, 10]
B = [i for i in A]
A[0] = "Hi"
print("List A is : % s" % (A))
print("List B is : % s" % (B))

Producción :

List A is : ['Hi', 4, 6, 8, 10]
List B is : [2, 4, 6, 8, 10]

También podemos realizar este método sin comprensión de listas y usar el bucle for de forma tradicional. Sin embargo, se necesitan más líneas de código y más tiempo.

Artículo relacionado - Python List