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()