¿Qué tiene eso de elegante? Dedica tiempo a invertir una lista en lugar de generarla de la manera que desea.
alexis
5
@alexis no cuesta nada. Obtienes reversed(range)gratis debido a la buena range_reverseoptimización incorporada en CPython. Hice algunos puntos de referencia rápida y no pude encontrar una diferencia significativa entre el coste step=-1y reversed()tanto en Python 2.7 y 3.3. También tenga en cuenta que este idioma se usa en heapq .
kojiro
Gracias, @kojiro, eso es interesante. Pero a menos que haya utilizado xrangeen sus pruebas de Python 2.7, reverseestará operando en una lista ordinaria, ya generada, no en un objeto de rango; Entonces, ¿estás diciendo que cualquier lista se puede revertir de manera eficiente o solo range/xrangeobjetos? (el código de heapq al que se vincula implica un objeto de rango de Python 3).
alexis
@alexis No sería tan atrevido como para sugerir que cualquier lista se puede revertir de manera eficiente; de todos modos, esa es una declaración demasiado incondicional para que la responda. Sin embargo, es revelador que el código de heapify cambió de step=-1a reversed()entre Python 2.3 y 2.4
kojiro
1
reversed(range(10))posiblemente no pueda salir a 4través 0. ¿Quizás quisiste decir range(5)?
0 es un valor condicional cuando esta condición es verdadera, el ciclo seguirá ejecutándose. 10 es el valor inicial. 1 es el modificador donde puede ser un simple decremento.
for number in reversed(range(0,10,1)):print number;
Llega tarde a la fiesta, pero para cualquiera que tenga la tarea de crear el suyo propio o quiera ver cómo funcionaría, aquí está la función con una ventaja adicional de reorganizar los valores de inicio-parada según el incremento deseado:
for i in reversed(mat):aunque podría ser más lentoRespuestas:
fuente
range(5,-1,-1). Aunque probablemente podría averiguarlo por ensayo y error.Esto es muy tarde, pero solo quería agregar que hay una forma más elegante: usar
reversedda:
fuente
reversed(range)gratis debido a la buenarange_reverseoptimización incorporada en CPython. Hice algunos puntos de referencia rápida y no pude encontrar una diferencia significativa entre el costestep=-1yreversed()tanto en Python 2.7 y 3.3. También tenga en cuenta que este idioma se usa en heapq .xrangeen sus pruebas de Python 2.7,reverseestará operando en una lista ordinaria, ya generada, no en un objeto de rango; Entonces, ¿estás diciendo que cualquier lista se puede revertir de manera eficiente o solorange/xrangeobjetos? (el código de heapq al que se vincula implica un objeto de rango de Python 3).step=-1areversed()entre Python 2.3 y 2.4reversed(range(10))posiblemente no pueda salir a4través0. ¿Quizás quisiste decirrange(5)?Esto te daría
6,5,4,3,2,1Como para
te daría
5,4,3,2,1,0fuente
fuente
fuente
0 es un valor condicional cuando esta condición es verdadera, el ciclo seguirá ejecutándose. 10 es el valor inicial. 1 es el modificador donde puede ser un simple decremento.
fuente
Llega tarde a la fiesta, pero para cualquiera que tenga la tarea de crear el suyo propio o quiera ver cómo funcionaría, aquí está la función con una ventaja adicional de reorganizar los valores de inicio-parada según el incremento deseado:
Incremento negativo:
O, con arranque-parada invertido:
Salida:
Incremento regular:
Salida:
Incremento cero:
Salida:
fuente
Para python3 donde
-1indicar el valor que se decrementará en cada pasofor n in range(6,0,-1): print(n)fuente