¿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.
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
_______________________________________________
pyar mailing list py...@python.org.ar
http://listas.python.org.ar/listinfo/pyar
PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
Hoy cai en un "problema" con listas usando Python 2.6
lista2 = list(lista1)
"QliX=D! [aka EHB]" <qli...@gmail.com> escribió:
>Usa lista2(lista) o lista2=list().extend(lista) por que la asignacion es un
>alias al mismo objeto.
>
>EHB
>
>2011/2/7 Juan Pablo Rabino <jpra...@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.
>>
>>
lista2 = lista1[:]
--
Guillermo O. «Tordek» Freschi. Programador, Escritor, Genio Maligno.
http://tordek.com.ar :: http://twitter.com/tordek
http://www.arcanopedia.com.ar - Juegos de Rol en Argentina
Hoy cai en un "problema" con listas usando Python 2.6Basicamente, teniendo una lista, realizo una copia de ésta y le inserto un elemento, el elemento se inserta en ambas.