[pyar] Loop infinito con un for

Daniel Moisset dmoisset en machinalis.com
Mie Oct 20 13:28:46 ART 2010


2010/10/20 Martin Volpe <martin.volpe en gmail.com>:
> Buenas lista, hoy me desperté con una curiosidad de tipo "que pasaría si",
> la escribí, y ahora tengo un resultado que no comprendo
>
> Si hago esto...
>
> a = ['H','o','l','a', '', 'p', 'y', 'a', 'r']
> for i in a:
>     print i
>     a+=i
>
> Tengo como resultado un loop infinito, no muy útil, pero loop infinito al
> fin, pero si hago lo mismo con un string obtengo esto:
>
>>>> a = 'hola pyar'
>>>> for i in a:
> ...     print i
> ...     a += i

Esos dos a += i son muy distintos, y eso lo hace engañoso

En el caso del string es equivalente a

a = a + i

Lo que crea un objeto nuevo, y aunque lo asocia a a, el for sigue
iterando sobre el viejo

En el segundo, a+=i NO ES equivalente a a = a + i. Ni tampoco a a+=i ;
en vez es equivalente a:

a.extend(i)

que modifica el mismo objeto que se esta iterando

Igual el loop eso no es infinito. Es tan finito como tu memoria RAM[1]

Saludos,
   D.

[1] A menos que compiles python a una maquina de Turing ;-)



More information about the pyar mailing list