¿Cómo clonar o copiar una lista?
¿Cuáles son las opciones para clonar o copiar una lista en Python?
Al usar nueva_lista = mi_lista
, cualquier modificación en nueva_lista
cambia siempre mi_lista
.
¿A qué se debe esto?
2262
3
Con
nueva_lista = mi_lista
, en realidad no tienes dos listas. La asignación sólo copia la referencia a la lista, no la lista real, por lo que tantonueva_lista
comomi_lista
se refieren a la misma lista después de la asignación.Para copiar realmente la lista, tienes varias posibilidades:
Puedes utilizar el método incorporado
list.copy()
(disponible desde Python 3.3):Puedes cortarla:
La opinión de Alex Martelli (al menos [en 2007][2]) sobre esto es, que es una sintaxis extraña y no tiene sentido usarla nunca. ;) (En su opinión, la siguiente es más legible).
Puedes usar la función incorporada
list()
:Puedes utilizar la función genérica
copy.copy()
:Esto es un poco más lento que
list()
porque tiene que averiguar primero el tipo de datos delista_antigua
.Si la lista contiene objetos y quieres copiarlos también, utiliza el genérico
copy.deepcopy()
:Obviamente es el método más lento y que más memoria necesita, pero a veces es inevitable.
**Ejemplo
Resultado:
Utiliza
cosa[:]
El lenguaje de Python para hacer esto es
newList = oldList[:]
.