Los métodos Python List Copy() devuelven una copia superficial de una lista (devuelve una nueva lista sin modificar las listas originales).
En ocasiones, existe la necesidad de reutilizar cualquier objeto, por lo que los métodos de copia son siempre de gran utilidad. Python en su lenguaje ofrece varias formas de lograr esto. Este artículo en particular tiene como objetivo demostrar el método de copia presente en la lista. Dado que la lista se usa ampliamente, su copia también es necesaria.
Python list.copy() Sintaxis:
Sintaxis : lista.copia()
Parámetros: el método copy() no toma ningún parámetro
Devoluciones: devuelve una copia superficial de una lista. Una copia superficial significa que cualquier modificación en la nueva lista no se reflejará en la lista original.
Ejemplo 1: demostración del funcionamiento de list.copy()
Aquí crearemos una lista y luego crearemos una copia superficial usando list.copy() en Python.
Python3
# Python 3 code to demonstrate # working of list.copy() # Initializing list lis1 = [ 1, 2, 3, 4 ] # Using copy() to create a shallow copy lis2 = lis1.copy() # Printing new list print ("The new list created is : " + str(lis2)) # Adding new element to new list lis2.append(5) # Printing lists after adding new element # No change in old list print ("The new list after adding new element : \ " + str(lis2)) print ("The old list after adding new element to new list : \ " + str(lis1))
Producción:
The new list created is : [1, 2, 3, 4] The new list after adding new element : [1, 2, 3, 4, 5] The old list after adding new element to new list : [1, 2, 3, 4]
Nota: Una copia superficial significa que si modificamos cualquiera de los elementos de la lista anidada, los cambios se reflejan en la lista ya que apuntan a la misma referencia. Mientras que en deep copy, cuando añadimos un elemento en cualquiera de las listas, solo se modifica esa lista. Cuando usamos el operador “=” (asignación), la nueva lista se refiere al mismo objeto, por lo que cualquier cambio (agregar, eliminar, cambio de valor) en una lista se refleja en ambas. Pero cuando usamos el método list.copy() , los cambios realizados en una lista o no se reflejan en otra excepto en los elementos anidados (como una lista dentro de una lista). Aquí deberíamos usar copy.deepcopy() del módulo de copia para evitar este problema.
Consulte este artículo Copia profunda frente a copia superficial .
- Técnicas de deep copy:
- Usando copy.deepcopy()
- Técnicas para copiar superficialmente:
- Usando copiar.copiar()
- Usando list.copy()
- usando rebanar
Ejemplo 2: Demostración de técnicas de copia superficial y profunda
Aquí crearemos una lista y luego crearemos una copia superficial usando list.copy() y Deep Copy usando deepcopy() en Python.
Python3
# Python 3 code to demonstrate # techniques of deep and shallow copy import copy # Initializing list list1 = [ 1, [2, 3] , 4 ] # all changes are reflected list2 = list1 # shallow copy - changes to # nested list is reflected, # same as copy.copy(), slicing list3 = list1.copy() # deep copy - no change is reflected list4 = copy.deepcopy(list1) list1.append(5) list1[1][1] = 999 print("list 1 after modification:\n", list1) print("list 2 after modification:\n", list2) print("list 3 after modification:\n", list3) print("list 4 after modification:\n", list4)
Producción:
list 1 after modification: [1, [2, 999], 4, 5] list 2 after modification: [1, [2, 999], 4, 5] list 3 after modification: [1, [2, 999], 4] list 4 after modification: [1, [2, 3], 4]
Publicación traducida automáticamente
Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA