2009/12/12 Matias Graña : > Hola, gente > Tengo una lista de N elementos, de la que quiero extraer los n más > chicos. Una opción es ordenarla y quedarme con el slice [:n]. Pero > resulta que N es mucho más grande que n (digamos n=10, N=1.000.000) > así que esto es ineficiente. Se puede hacer en N.log(n), en lugar de > N.log(N) que sale de ordenarlos todos. El punto es: hay alguna > librería que haga esto? Si lo tengo que programar yo, quizás sea más > eficiente ordenarlos todos (que se hace en C en lugar de ser Python > interpretado). > > Gracias, > -- Matías Graña Eso es un cuello de botella en tu programa o estás haciendo optimización prematura porque es divertido? 2009/12/12 Facundo Batista : >>>> import heapq >>>> heapq.nsmallest(2, [1, 4, 55, 65, 7, 3]) > [1, 3] Crear un heap con n elementos no es O(n.log(n))? Saludos, Pablo --------------------------------------------------------------------- Para dar de baja la suscripcion, mande un mensaje a: pyar-unsubscribe@decode.com.ar Para obtener el resto de direcciones-comando, mande un mensaje a: pyar-help@decode.com.ar PyAr - Python Argentina - Sitio web: http://www.python.com.ar/