Podría estar equivocado (solo avíseme y eliminaré la pregunta) pero parece que Python no responderá
for n in range(6,0):
print n
Intenté usar xrange y tampoco funcionó. ¿Cómo puedo implementar eso?
Podría estar equivocado (solo avíseme y eliminaré la pregunta) pero parece que Python no responderá
for n in range(6,0):
print n
Intenté usar xrange y tampoco funcionó. ¿Cómo puedo implementar eso?
for i in reversed(mat):
aunque podría ser más lento
Respuestas:
for n in range(6,0,-1):
print n
# prints [6, 5, 4, 3, 2, 1]
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 reversed
for i in reversed(range(10)):
print i
da:
4
3
2
1
0
reversed(range)
gratis debido a la buena range_reverse
optimización incorporada en CPython. Hice algunos puntos de referencia rápida y no pude encontrar una diferencia significativa entre el coste step=-1
y reversed()
tanto en Python 2.7 y 3.3. También tenga en cuenta que este idioma se usa en heapq .
xrange
en sus pruebas de Python 2.7, reverse
estará 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/xrange
objetos? (el código de heapq al que se vincula implica un objeto de rango de Python 3).
step=-1
a reversed()
entre Python 2.3 y 2.4
reversed(range(10))
posiblemente no pueda salir a 4
través 0
. ¿Quizás quisiste decir range(5)
?
for n in range(6,0,-1)
Esto te daría 6,5,4,3,2,1
Como para
for n in reversed(range(0,6))
te daría 5,4,3,2,1,0
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:
def RANGE(start, stop=None, increment=1):
if stop is None:
stop = start
start = 1
value_list = sorted([start, stop])
if increment == 0:
print('Error! Please enter nonzero increment value!')
else:
value_list = sorted([start, stop])
if increment < 0:
start = value_list[1]
stop = value_list[0]
while start >= stop:
worker = start
start += increment
yield worker
else:
start = value_list[0]
stop = value_list[1]
while start < stop:
worker = start
start += increment
yield worker
Incremento negativo:
for i in RANGE(1, 10, -1):
print(i)
O, con arranque-parada invertido:
for i in RANGE(10, 1, -1):
print(i)
Salida:
10
9
8
7
6
5
4
3
2
1
Incremento regular:
for i in RANGE(1, 10):
print(i)
Salida:
1
2
3
4
5
6
7
8
9
Incremento cero:
for i in RANGE(1, 10, 0):
print(i)
Salida:
'Error! Please enter nonzero increment value!'
Para python3 donde -1
indicar el valor que se decrementará en cada paso
for n in range(6,0,-1):
print(n)