[pyar] ¿Volvemos a empezar?

Roberto Alsina ralsina en netmanagers.com.ar
Mie Abr 30 20:06:21 ART 2014


On 30/04/14 20:02, Hernan Grecco wrote:
> Hola,
>
> 2014-04-30 19:27 GMT-03:00 Roberto Alsina <ralsina en netmanagers.com.ar>:
>> On 30/04/14 19:23, Fernando Pelliccioni wrote:
>>> In [1]: a = range(10)
>>>
>>> In [2]: b = a[:]
>> 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)
> No es el ejemplo mas feliz ya que los numeros (como los strings), se
> comportan disintos a otros objetos:
>
>>>> x = 1
>>>> y = 1
>>>> id(x), id(y)
> (4298193656, 4298193656)
>
> Fijate que comparten el mismo id.
>
>>>> x = object()
>>>> y = object()
>>>> id(x), id(y)
> (4297814160, 4297814176)
>
> y aca no.
>
> Por eso no podes saber si una operacion (en este caso [:]) hace una
> copia o no del contenido usando una lista numeros.

Es cierto, pero en este caso es así ;-)

 >>> a=list('cosa')
 >>> a
['c', 'o', 's', 'a']
 >>> b=a[:]
 >>> a[0] is b[0]
True

E inclusive:

 >>> a=[object() for x in range(10)]
 >>> b=a[:]
 >>> a[0] is b[0]
True

Pero tenés razón que el ejemplo no era el más feliz.


More information about the pyar mailing list