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/

Responder a