Skip to content

Invertire una lista, una stringa o una tupla in Python (reverse, reversed)

Python

In Python, puoi invertire gli elementi delle liste (list) usando reverse(), reversed() e slicing. Se vuoi invertire stringhe (str) e tuple (tuple), usa reversed() o slice.

In questo articolo vengono descritti i seguenti contenuti.

  • Il metodo del tipo di elenco reverse() inverte l’elenco originale
  • La funzione incorporata reversed() richiede un iteratore inverso
  • Rovesciare con affettare
  • Invertire stringhe e tupla

Se si desidera ordinare in ordine crescente o decrescente anziché in ordine inverso, vedere il seguente articolo.

Il metodo del tipo di elenco reverse() inverte l’elenco originale

reverse() è un metodo di tipo elenco.

reverse() è un processo distruttivo che inverte l’elenco originale in atto.

org_list = [1, 2, 3, 4, 5]

org_list.reverse()
print(org_list)
# [5, 4, 3, 2, 1]

Nota che reverse() restituisce Nessuno.

print(org_list.reverse())
# None

La funzione incorporata reversed() richiede un iteratore inverso

reversed() è una funzione incorporata.

La funzione incorporata reversed() genera un iteratore che recupera gli elementi in ordine inverso.

reversed() restituisce un iteratore che recupera gli elementi in ordine inverso. L’elenco originale rimane invariato.

org_list = [1, 2, 3, 4, 5]

reverse_iterator = reversed(org_list)
print(org_list)
# [1, 2, 3, 4, 5]

print(type(reverse_iterator))
# <class 'list_reverseiterator'>

Nota che reversed() restituisce un iteratore, non un elenco.

Puoi semplicemente utilizzare in un ciclo per.

for i in reversed(org_list):
    print(i)
# 5
# 4
# 3
# 2
# 1

Se vuoi ottenere un elenco in ordine inverso, usa list() per ottenere l’iteratore in un elenco.

new_list = list(reversed(org_list))
print(org_list)
print(new_list)
# [1, 2, 3, 4, 5]
# [5, 4, 3, 2, 1]

Rovesciare con affettare

Puoi anche utilizzare un’affettatura per invertire gli elenchi.

Nello affettare, specificare un intervallo o un incremento nel formato [inizio:arresto:fine].

Se start e stop vengono omessi, viene selezionato l’intero elenco e, impostando il passaggio su -1, è possibile ottenere gli elementi uno per uno dal retro.

È possibile ottenere l’elenco inverso di [::-1].

org_list = [1, 2, 3, 4, 5]

new_list = org_list[::-1]
print(org_list)
print(new_list)
# [1, 2, 3, 4, 5]
# [5, 4, 3, 2, 1]

Vedere il seguente articolo per i dettagli sull’affettatura.

Invertire stringhe e tupla

Poiché le stringhe e le tuple sono immutabili, non esiste un metodo reverse() che aggiorni l’oggetto originale.

Se vuoi invertire stringhe o tuple, usa reversed() o slice.

Cordone inverso

Poiché gli iteratori non possono essere convertiti direttamente in stringhe, quando si utilizza reversed(), possono presentare l’iteratore in un elenco contenente un carattere e quindi unirli con join().

org_str = 'abcde'

new_str_list = list(reversed(org_str))
print(new_str_list)
# ['e', 'd', 'c', 'b', 'a']

new_str = ''.join(list(reversed(org_str)))
print(new_str)
# edcba

Il metodo che utilizza lo affettare è lo stesso delle liste. Questo è più facile che usare reversed().

new_str = org_str[::-1]
print(new_str)
# edcba

Tupla inversa

Usa tuple() per un iteratore in una tupla.

org_tuple = (1, 2, 3, 4, 5)

new_tuple = tuple(reversed(org_tuple))
print(new_tuple)
# (5, 4, 3, 2, 1)

Il metodo che utilizza lo affettare è lo stesso delle liste.

new_tuple = org_tuple[::-1]
print(new_tuple)
# (5, 4, 3, 2, 1)