Python – iteración hacia atrás a través de un rango en una lista
Me gustaría buscar hacia atrás en una lista.
Este es el código que he leído en otros mensajes y debería funcionar:
ls = [1, 2, 3]
for i in range(len(ls)-1, 0, -1):
print(i)
El resultado sería:
2
1
En cambio, si utilizo este código:
ls = [1, 2, 3]
for i in range(len(ls)-1, -1, -1):
print(i)
El resultado es:
2
1
0
¿Por qué es que range(len(ls)-1, 0, -1)
se salta un elemento y por qué se recomienda como una solución para la iteración hacia atrás (en lugar de range(len(ls)-1, -1, -1)
)?
davy.ai
La razón por la que
range(len(ls)-1, 0, -1)
salta un elemento es porque el segundo argumento enrange()
especifica el punto de parada de la iteración, y es exclusivo. Esto significa que el bucle iterará sobre cada índice desdelen(ls)-1
hacia1
, pero no incluirá el índice0
en la iteración.En cuanto a por qué se recomienda como solución para la iteración hacia atrás, es porque ahorra tiempo de procesamiento al evitar iteraciones innecesarias. Si usáramos
range(len(ls)-1, -1, -1)
en su lugar, el bucle seguiría iterando sobre cada índice desdelen(ls)-1
hacia0
, pero no saltaría ningún elemento. Esto significa que haría una iteración adicional que no es necesaria. Sin embargo, si la lista es pequeña o si el tiempo de procesamiento no es un problema, sería perfectamente válido usarrange(len(ls)-1, -1, -1)
para iterar hacia atrás a través de la lista.