Liste > Capovolgere

1

Il metodo reverse() risolve il problema

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

2

Scambia

  • primo e ultimo
  • secondo e penultimo

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!

3

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

n = len(lista)
for p1 in range(n//2):
    p2 = n-1-p1
    temp      = lista[p1] 
    lista[p1] = lista[p2] 
    lista[p2] = temp

4

Più semplice

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