Excelente !!! Gracias a todos por sus aportes, es dificil de creer que exista tanta flexibilidad en un lenguaje de programación para hacer lo mismo de diferentes maneras.
Saludos a todos desde Peru El 19 de octubre de 2010 09:03, lasizoillo <[email protected]> escribió: > 2010/10/19 Arnau Sanchez <[email protected]>: > > On Tue, 19 Oct 2010 13:50:37 +0200 tny wrote: > > > >> uno_de_cada_en_orden_original = [a[i] for i in range(len(a)) if a[i] not > >> in a[:i]] > > > > Uf, eso tiene pinta de O(n^2) en tiempo cuando unique puede (debería) ser > O(n). > > Un unique sobre una colección ordenada debería ser O(n) porque basta > con comparar con el anterior. Si la lista no esta ordenada habría que > encontrar si ya hemos leido ese dato antes o no. Si puede hacer esa > búsqueda con O(1), seguiría siendo O(n), pero lo más probable es que > acabara siendo O(n log n). En su caso tiene pinta de O(n^2) u O(n^2 / > 2) si nos ponemos finos, cosa que es mejorable, pero tiene la ventaja > de no necesitar otra estructura adicional para hacer ese loopback. Es > más lento, pero requiere menos memoria. > > Resumiendo, me parece ideal para los casos en los que se quiera quitar > duplicados de una lista manteniendo el orden (desordenado) original de > esta y los requisitos de espacio/memoria sean necesarios. Para el > resto de los casos hay soluciones mejores ;-) > > Un saludo: > > Javi > _______________________________________________ > Python-es mailing list > [email protected] > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ >
_______________________________________________ Python-es mailing list [email protected] http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
