Ordenacion y Media

Chema Cortes pych3m4 en gmail.com
Jue Sep 28 02:27:32 CEST 2006


2006/9/27, Juan Carlos Rodrigo <jrodrigog en gmail.com>:
> import pprint
> l = [
>   ["Nomina",        7286, 2430, 9696 ],
>   ["Servicios",     2945, 747 ,  330 ],
>   ["Arrendamiento",  925, 500 , 3364 ],
>   ["Publicidad",    1210, 433 , 3879 ],
>   ["Diversos",      5125, 497 , 1461 ],
>   ["GastosAdmin",   8000, 7659, 8712 ],
> ]
> # ordenando por la primera columna
> l.sort( lambda x,y: cmp(x[0],y[0]) )

Personalmente, prefiero hacerlo así:

l.sort(key=lambda x:x[0])

La función que se pasa como "key" sólo se ejecuta una vez por
elemento, mientras que la que se pasa para comparar se ejecuta tantas
veces como comparaciones se hagan.


> pprint.pprint( l )
> # ordenando por la segunda columna
> l.sort( lambda x,y: cmp(x[1],y[1]) )
> pprint.pprint( l )
> # media de la segunda columna
> print reduce( lambda x,y: x+y[1], l, 0.0 ) / len( l )

En este caso prefiero esta otra forma:

print sum([ x[1] for x in l])/len(l)




Más información sobre la lista de distribución Python-es