Referencia circular.
Chema Cortés
py en ch3m4.org
Mar Nov 30 13:04:08 CET 2004
El Martes, 30 de Noviembre de 2004 11:49, Pepe Aracil escribió:
> Seguramente la mayoría de vosotros ya sabéis esto.
>
> Se me ha ocurrido provocar una referencia circular en una lista para ver
> como la representaba en pantalla... ¿Petará? ¿Provocará una excepción? ¿Un
> bucle sin fin?.
>
> Pues me ha sorprendido gratamente como trata la referencia circular.
>
> Ej.
>
> >>> lista=[1,2,3,4]
> >>> lista+=[lista]
> >>> lista
>
> [1, 2, 3, 4, [...]]
>
> Pone unos bonitos puntos suspensivos :D, pero la referencia circular es
> total mente funcional.
>
> >>> lista[4][4][4][4][4][4]
>
> [1, 2, 3, 4, [...]]
La prueba final:
>>> lista[4] is lista
True
Sólo por probar más, he utilizado el módulo 'copy' para copiar la lista
(también para ver si petaba :-P) Se supone que 'copy.copy' realiza una copia
"superficial", y 'copy.deepcopy' una copia más profunda. Resulta que:
>>> import copy
>>> x=copy.copy(lista)
>>> x
[1, 2, 3, 4, [1, 2, 3, 4, [...]]]
>>> x is lista
False
>>> x[4] is lista
True
>>> x=copy.deepcopy(lista)
>>> x
[1, 2, 3, 4, [...]]
>>> x is lista
False
>>> x[4] is lista
False
>>> x[4] is x
True
>>>
Vamos, que funciona mejor de lo que pensaba.
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: no disponible
Type: application/pgp-signature
Size: 189 bytes
Desc: no disponible
URL: <http://mail.python.org/pipermail/python-es/attachments/20041130/e2cefec3/attachment.pgp>
------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es
Más información sobre la lista de distribución Python-es