Liste > Capovolgere

1

Scambia primo e ultimo, secondo e penultimo, terzo e terzultimo, …

Utilizza due “puntatori” al primo e all’ultimo elemento

  • p1 = 0, 1, 2, …
  • p2 = n-1, n-2, …
n = len(lista)
for p1 in range(n):
    p2 = n-1-p1

    temp      = lista[p1] 
    lista[p1] = lista[p2] 
    lista[p2] = temp

Attenzione: non funziona perché ogni elemento viene scambiato 2 volte.

2

Si scambiano gli elementi fino a metà con quelli della seconda metà

n    = len(lista)
metà = n//2
for p1 in range(metà):
    p2 = n-1-p1

    temp      = lista[p1] 
    lista[p1] = lista[p2] 
    lista[p2] = temp

3

Più semplice

  • il primo indice punta alla prima posizione e cresce
  • il secondo indice punta all’ultima posizione e decresce
  • la ripetizione avviene se il primo indice è minore del secondo indice
n  = len(lista) 
p1 = 0                     # posizione primo elemento
p2 = n-1                   # posizione ultimo elemento
while(p1 < p2):            # se sono ancora "lontani"
    temp      = lista[p1]  # scambia i due elementi
    lista[p1] = lista[p2] 
    lista[p2] = temp 

    p1 += 1                # scala le posizioni
    p2 -= 1

4

Il metodo reverse() delle liste risolve il problema

lista = [1, 9, 2, 8]
lista.reverse()