HOWTO · Python
Intervalo para trás em Python
Este tutorial explica como percorrer números e sequências em ordem inversa em Python, usando a função `range()`, `reversed()`, fatiamento e um contador.
Nesta página
Em Python, a forma de percorrer elementos em ordem inversa depende do que você quer visitar. Use range() decrescente para valores numéricos, reversed() para percorrer uma sequência existente sem alterá-la ou fatiamento quando precisar de uma cópia invertida.
Use range() com um passo negativo
range(start, stop, step) produz valores de start em direção a stop, mas nunca inclui stop. Um passo negativo avança para valores menores. Por exemplo, para contar de 10 até 1, comece em 10 e use 0 como limite final exclusivo:
Execute este exemplo:
O código e os rótulos ou saídas exibidos nesta seção permanecem em inglês.
for number in range(10, 0, -1):
print(number)
Para incluir zero na contagem regressiva a partir de 100, use range(100, -1, -1): o limite final precisa ser um a menos que o último valor desejado. Um passo negativo com um valor inicial que já está abaixo do limite final não faz uma contagem regressiva; escolha o início, o limite final e o passo de modo que apontem na mesma direção. range() é útil quando o loop precisa de números, como índices ou uma contagem regressiva, em vez de elementos de uma coleção.
Use reversed() para percorrer uma sequência
Use reversed() quando quiser visitar os itens de uma sequência existente do último ao primeiro. Ela retorna um iterador e não altera a sequência original. Funciona com listas, strings e intervalos, entre outros objetos reversíveis.
Execute este exemplo:
O código e os rótulos ou saídas exibidos nesta seção permanecem em inglês.
items = ["first", "second", "third"]
for item in reversed(items):
print(item)
Para uma sequência numérica, reversed(range(5)) percorre os valores de 4 até 0. Prefira essa forma quando os valores já vierem de um intervalo; use range() com passo negativo quando quiser especificar diretamente o intervalo numérico decrescente. Como reversed() retorna um iterador, ela não cria uma segunda lista apenas para percorrer os itens em ordem inversa.
Inverta uma lista ou string com fatiamento
Um fatiamento com passo -1, escrito como sequence[::-1], produz os elementos na ordem inversa. Para uma lista ou string, isso cria uma nova sequência e mantém a original intacta. É uma forma concisa quando você precisa do próprio valor invertido, por exemplo, para atribuí-lo a outra variável ou passá-lo a uma função.
Execute este exemplo:
O código e os rótulos ou saídas exibidos nesta seção permanecem em inglês.
word = "Python"
backward = word[::-1]
print(backward)
O fatiamento aloca uma cópia, então usa memória proporcional ao tamanho da sequência. Se você só precisa percorrer os elementos e não precisa de um valor invertido separado, reversed(sequence) evita essa cópia. A mesma sintaxe de fatiamento funciona com listas, por exemplo, items[::-1].
Use um contador quando precisar de lógica personalizada no loop
Um loop while é útil quando cada etapa depende do trabalho feito na iteração anterior ou quando a atualização envolve mais do que subtrair um. Defina o contador com o primeiro valor que deseja processar, mantenha a condição inclusiva se esse valor for zero e atualize o contador exatamente uma vez por iteração:
Execute este exemplo:
O código e os rótulos ou saídas exibidos nesta seção permanecem em inglês.
number = 4
while number >= 0:
print(number)
number -= 1
4
3
2
1
0
A condição number >= 0 inclui zero. Com number > 0, o loop terminaria antes de processá-lo. Para uma contagem regressiva simples e fixa, range() é mais curto e menos sujeito a erros de atualização; escolha um contador quando a lógica personalizada do loop tornar útil fazer a atualização explicitamente.
Escolha o método certo para percorrer em ordem inversa
Use range() com passo negativo quando precisar de uma sequência de números ou índices decrescentes. Use reversed() quando quiser percorrer uma sequência existente sem alterá-la e não precisar de uma cópia. Use [::-1] quando precisar de uma lista ou string invertida como um novo valor, lembrando que isso aloca essa sequência. Escolha um contador em um loop while quando a próxima etapa ou a condição de parada depender de uma lógica personalizada. Em cada caso, decida se o limite final deve ser incluído antes de escrever o limite de range ou a condição do loop; essa é a causa mais comum de erros de uma unidade nos limites.