El 4 de marzo de 2010 17:33, Pablo Angulo <pablo.ang...@uam.es> escribió:
> Kiko escribió: > > tiempo de la primera opción: 0.0149998664856 > > for i in subconjunto: > > ultimo = conjunto.index(i, ultimo+1) > > indices.append(ultimo) > > Los primero 25 valores de indices = [0, 3, 6, 9, 12, 15, 18, 21, 24, > > 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72] > > > > tiempo de mi opción, la original: 41.2180001736 > > indices1 = [conjunto.index(i) for i in subconjunto] > > Los primero 25 valores de indices1 = [0, 3, 6, 9, 12, 15, 18, 21, 24, > > 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72] > > > > tiempo de la tercera opción: 0.0469999313354 > > indices2 = [bisect.bisect(conjunto, i) for i in subconjunto] > > Los primero 25 valores de indices2 = [1, 4, 7, 10, 13, 16, 19, 22, 25, > > 28, 31, 34, 37, 40, 43, 46, 49, 52, 55, 58, 61, 64, 67, 70, 73] > > > > Menos mal que he preguntado a los expertos. > > > > Muchas gracias por las mejoras. Tanto la primera opción como la > > tercera son infinitamente mejores que la mía y aceptables en tiempo > usado. > Las mediciones de tiempo hay que tomarlas con cautela: si subconjunto es > mucho más pequeño que conjunto, entonces Mlog(N) es menor que N, y te > interesa usar el tercer método. > _______________________________________________ > Python-es mailing list > Python-es@python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > De acuerdo contigo. Pero con este ejercicio, lo que queda claro es que cualquiera de las dos propuestas es infinitamente mejor que la inicial (la mía) en tiempo de cálculo y ambas aceptables para lo que necesito ahora mismo.
_______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/