¿Tiene python un medio para hacer foreach al revés? Espero hacer un filtro() (o enumerar la comprensión) y revertir una lista al mismo tiempo, de modo que pueda evitar hacerlo por separado (que sospecho que será más lento). Estoy usando python 2.4 (tengo que hacerlo por desgracia), pero también tengo curiosidad por saber cuál sería la solución de comprensión de listas en Python 3.0.Foreach de Python hacia atrás
Editar Ambas soluciones parecen ser la misma:
python -m timeit -s 'x=[1,2,3,4,5]*99; filter(lambda x: x == 5, reversed(x))'
100000000 loops, best of 3: 0.0117 usec per loop
python -m timeit -s 'x=[1,2,3,4,5]*99; x.reverse(); filter(lambda x: x == 5, x)'
100000000 loops, best of 3: 0.0117 usec per loop
No estoy seguro de por qué se sospecha que sería más lenta, por lo menos en un punto que usted debe preocuparse por ello. Esto suena un poco como una optimización prematura para mí. –
Me pareció que filter() pasa una vez y reverse() pasa por segunda vez, así que pensé que habría una forma de hacerlo con un recorrido. – shadowland
Siempre puede desenrollar los dos manualmente, pero eso no será más rápido si está escrito en Python, y la sobrecarga es casi seguro (* especialmente * si no tiene datos duros para demostrar lo contrario) no vale la pena escribir una extensión C módulo. Y eso suponiendo que también escriba la comparación en C, volver a llamar a Python para cada elemento reducirá en gran medida cualquier ganancia potencial. – delnan