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