seleccionar - ¿Retroceder utilizando índices en Python?
seleccionar columnas de un dataframe pandas (13)
Estoy tratando de pasar de 100 a 0. ¿Cómo hago esto en Python?
for i in range (100,0)
no funciona.
Corto y dulce. Esta fue mi solución al hacer el curso codeAcademy. Imprime una cadena en orden de rev.
def reverse(text):
string = ""
for i in range(len(text)-1,-1,-1):
string += text[i]
return string
En mi opinión, este es el más legible:
for i in reversed(xrange(101)):
print i,
Generalmente en Python, puede usar índices negativos para comenzar desde la parte posterior:
numbers = [10, 20, 30, 40, 50]
for i in xrange(len(numbers)):
print numbers[-i - 1]
Resultado:
50
40
30
20
10
Intenté esto en uno de los ejercicios de codeacademy (invertir caracteres en una cadena sin usar invertido ni :: -1)
def reverse(text):
chars= []
l = len(text)
last = l-1
for i in range (l):
chars.append(text[last])
last-=1
result= ""
for c in chars:
result += c
return result
print reverse(''hola'')
La mejor manera es usar la función de rango
Caso 1. Cuando sabemos que tenemos cierto número de iteraciones podemos simplemente usar la función de rango como esta
Antes de usar range () permítanme dar una breve descripción de range ()
Se necesitan tres parámetros: el primero es el número inicial el segundo y el último número, excepto esta tercera diferencia entre cada iteración.
for step in range(5,-1,-1):
print(step)
Caso 2 cuando tenemos lista y queremos iterar la lista en orden inverso
words = [''cat'',''xat'',''hat'',''mat'']
for word in range(len(words)-1,-1,-1):
print(words[word])
La respuesta simple para resolver su problema podría ser así:
for i in range(100):
k = 100 - i
print k
Otra solución:
z = 10
for x in range (z):
y = z-x
print y
Resultado:
10
9
8
7
6
5
4
3
2
1
Consejo: Si está utilizando este método para contar los índices en una lista, querrá -1 del valor ''y'', ya que sus índices de lista comenzarán en 0.
Pruebe el range(100,-1,-1)
, siendo el 3er argumento el incremento a usar (documentado here ).
Siempre puede aumentar el rango y restar de una variable en su caso 100 - i
donde i in range( 0, 101 )
.
for i in range( 0, 101 ):
print 100 - i
for var in range(10,-1,-1)
funciona
Por qué tu código no funcionó
Tu código for i in range (100, 0)
está bien, excepto
el tercer parámetro ( step
) es por defecto +1
. Por lo tanto, debe especificar el 3er parámetro en range () como -1
para retroceder.
for i in range(100, -1, -1):
print(i)
NOTA: Esto incluye 100 y 0 en la salida.
Hay varias formas.
Mejor manera
Para el modo pythonic, verifique PEP 0322 .
Este es el ejemplo pitónico de Python3 para imprimir de 100 a 0 (incluidos 100 y 0).
for i in reversed(range(101)):
print(i)
a = 10
for i in sorted(range(a), reverse=True):
print i
for i in range(100, -1, -1)
y alguna solución un poco más larga (y más lenta):
for i in reversed(range(101))
for i in range(101)[::-1]