[pyar] ¿Volvemos a empezar?

Roberto Alsina ralsina en netmanagers.com.ar
Mie Abr 30 19:27:44 ART 2014


On 30/04/14 19:23, Fernando Pelliccioni wrote:
>
> 2014-04-30 19:16 GMT-03:00 Pablo Gabriel Celayes 
> <pablocelayes en gmail.com <mailto:pablocelayes en gmail.com>>:
>
>     El slice crea una lista nueva. De hecho, un atajo común para crear
>     una copia es hacer un slice sin parámetros:
>
>
> Perdón, pero, no se por qué hay algo que me hace dudar ...
> Seguro que crea una lista nueva?  (no se adelanten, ver abajo)...
> Hay una tecnica que se llama Copy-On-Write (COW) ...  (seguir leyendo)
>
>
>     In [1]: a = range(10)
>
>     In [2]: b = a[:]
>
>
> Hasta este punto, es probable que b no sea una lista nueva (copiada de 
> a), ya que a = b.

Ahi, ya es una copia. Python no hace copy-on-write de listas.

>
>     In [3]: b[0] = 20
>
>
>
> Como aca estoy modificando b, recien aca hago la copia ( Copy on Write )
> Ahora si son listas distintas, dos pedazos de memoria diferentes.

Ya lo eran un paso antes. Un detalle tal vez interesante es que las 
listas son distintas pero los elementos son los mismos:

 >>> id(a), id(b)
(140266986366848, 140266985952624)

 >>> id(a[0]), id(b[0])
(10455008, 10455008)


> Es una optimizacion usada en algunos lenguajes, pero desaconsejada en 
> ciertos escenarios.
> Me pregunto si Python tambien la estará utilizando en casos como este.
>
No.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140430/db91d767/attachment-0001.html>


More information about the pyar mailing list