[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