[pyar] lista.insert()

Patricio Molina patriciomolina en gmail.com
Lun Feb 7 16:34:13 ART 2011


2011/2/7 Juan Pablo Rabino <jprabino en gmail.com>
>
> Hoy cai en un "problema" con listas usando Python 2.6
> Basicamente, teniendo una lista, realizo una copia de ésta y le inserto un elemento, el elemento se inserta en ambas. Ejemplifico:
> >>> lista=[1,2,3,4,5,6,7]
> >>> lista
> [1, 2, 3, 4, 5, 6, 7]
> >>> lista2=lista
> >>> lista2
> [1, 2, 3, 4, 5, 6, 7]
> >>> lista2.insert(2,"ELEMENTO INSERTADO")
> >>> lista2
> [1, 2, 'ELEMENTO INSERTADO', 3, 4, 5, 6, 7]
> >>> lista
> [1, 2, 'ELEMENTO INSERTADO', 3, 4, 5, 6, 7]
> ¿Alguien me podría explicar por qué pasa esto?
> Obviamente, conocido el problema, el workaround es trivial, pero queria saber si alguien me podia explicar la razon.
> Es como que python no realiza una copia, sino que simplemente asigna el mismo puntero de memoria a ambas listas. Si alguien tiene la respuesta se agradece.
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/

No es una copia, lista2 está apuntando a la misma dirección de memoria
que lista. Fijate haciendo id(lista) e id(lista2)

Una copia sería lista2 = lista[:]

Saludos



More information about the pyar mailing list