Inverter uma lista em Python

Rayven Esplanada 11 dezembro 2023
  1. Utilize range() para reverter uma lista em Python
  2. Inverter uma lista pelo while Loop em Python
  3. Inverter uma lista utilizando o operador de fatias em Python
  4. Utilize reversed() para reverter uma lista em Python
Inverter uma lista em Python

Este tutorial irá demonstrar diferentes formas de como reverter uma lista em Python.

A inversão de lista é um dos problemas mais comuns de programação inicial que se experimenta quando se aprende a programar. Em Python, existem várias formas fáceis de reverter uma lista.

Utilize range() para reverter uma lista em Python

range() é uma função integrada Python que produz uma lista de uma gama de números.

Sintaxe de amplitude()

range(start, stop, step)

Esta função tem 3 argumentos; o principal argumento exigido é o segundo argumento stop, um número que denota onde se quer parar. Há 2 argumentos opcionais, start especifica onde se deve começar a contar e step especifica o aumento da sequência.

Note que stop terá um offset de 1, uma vez que a contagem começa em 0. Para criar uma lista que pare em 5 utilizando range(), o valor de paragem teria de ser 6.

numbers = list(range(6))
print(numbers)

Resultado:

[0, 1, 2, 3, 4, 5]

Para inverter esta lista, é necessário especificar os argumentos start e step.

O start está definido em 5, enquanto o step é -1 uma vez que queremos diminuir o intervalo em 1 de cada vez. O argumento stop deve também ser definido para -1, uma vez que queremos parar em 0 (uma vez que stop tem um offset de 1).

numbers = list(range(5, -1, -1))
print(numbers)

Resultado:

[5, 4, 3, 2, 1, 0]

Inverter uma lista pelo while Loop em Python

Declare uma lista de 10 números inteiros aleatórios que queremos criar uma nova lista em ordem inversa.

numbers = [66, 78, 2, 45, 97, 17, 34, 105, 44, 52]

Utilizar um laço de tempo sobre a lista para a produzir em ordem inversa. Primeiro, obter o tamanho da lista e deduzi-lo por 1 para apontar para o último elemento da lista. Vamos também declarar uma lista vazia para armazenar a nova versão invertida da lista anterior.

idx = len(numbers) - 1
newList = []

Agora utilize o loop while para iterar e armazene cada elemento da nova lista com cada iteração a diminuir idx até atingir 0.

while idx >= 0:
    newList.append(numbers[idx])
    idx = idx - 1

print(newList)

Resultado:

[52, 44, 105, 34, 17, 97, 45, 2, 78, 66]

Inverter uma lista utilizando o operador de fatias em Python

Se preferir não fazer um loop sobre a lista, então utilize o operador de slice para diminuir o índice do array por 1.

Semelhante ao range(), o operador da fatia aceita três argumentos: start, stop, e step.

Deixe os dois primeiros argumentos em branco para que cubra toda a matriz e defina o valor do step para -1, para que comece com o fim do array e decretando-o por 1 de cada vez.

newList = numbers[::-1]
print(newList)

Resultado:

[52, 44, 105, 34, 17, 97, 45, 2, 78, 66]

Utilize reversed() para reverter uma lista em Python

Outra forma fácil de inverter uma lista em Python é utilizar a função integrada reversed(). Esta função aceita um argumento de lista e devolve um iterador da versão invertida da mesma lista.

Utilizando o mesmo exemplo numbers acima, inverte a lista utilizando esta função. Não se esqueça de embrulhar a função com list() para realmente armazenar o valor de retorno de revered() numa lista.

newList = list(reversed(numbers))
print(newList)

Alternativamente, também pode utilizar um laço for para iterar sobre a lista invertida e armazená-lo directamente em newList.

newList = [num for num in reversed(numbers)]
print(newList)

O resultado de ambas as soluções será o mesmo.

[52, 44, 105, 34, 17, 97, 45, 2, 78, 66]

Em resumo, Python fornece uma forma simples de inverter uma lista, utilizando a função reversed(). Também se pode inverter uma lista manualmente, fazendo um laço de for ou while. Python também tem um método fácil de inverter uma lista numa única linha, se se sentir confortável utilizando o operador da fatia.

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

Artigo relacionado - Python List