Re: [pyar] Hola mundo!

Página superior
Adjuntos:
+ (text/plain)
+ (text/html)

Responder a este mensaje
Autor: Claudio Freire
Fecha:  
A: pyar
Asunto: Re: [pyar] Hola mundo!
2009/9/20 Natalia Bidart <nbidart.except@???>

> Acá (creo que) quisiste hacer un swap. En python lo podés hacer más bonito,
> así:
>
> In [1]: l = [1,2,3,4]
>
> In [2]: l[0], l[1] = l[1], l[0]
>
> In [3]: l
> Out[3]: [2, 1, 3, 4]
>


Interesante - leyéndolo, pensé que crearía una tupla y la desempaqutaría en
dos temporales para luego guardarlas en l[0] y l[1] (lo que sería
ineficiente), pero parece que el compilador de python es más inteligente de
lo que pensaba:

>>> import dis
>>> def swap(l,i,j):

... l[i],l[j] = l[j],l[i]
...
>>> dis.dis(swap)

2 0 LOAD_FAST 0 (l)
3 LOAD_FAST 2 (j)
6 BINARY_SUBSCR
7 LOAD_FAST 0 (l)
10 LOAD_FAST 1 (i)
13 BINARY_SUBSCR
14 ROT_TWO
15 LOAD_FAST 0 (l)
18 LOAD_FAST 1 (i)
21 STORE_SUBSCR
22 LOAD_FAST 0 (l)
25 LOAD_FAST 2 (j)
28 STORE_SUBSCR
29 LOAD_CONST 0 (None)
32 RETURN_VALUE
>>>


Interesante...
...como si fuera un caso para el que optimizaron explícitamente.

Voy a empezar a usarlo ;-)