Considera una lista di numeri
1 |
lista=[1,9,2,8] |
Visualizzare
Soluzione 1
1 |
print(lista) # [1,9,2,8] |
Soluzione 2
In colonna
1 2 |
for x in lista: print(x) |
Soluzione 3
Visualizzare gli elementi della lista sulla stessa riga ma separati con uno spazio
1 2 3 |
for x in lista: # 1 9 2 8 print(x, end=" ") print() |
Soluzione 4
Alla rovescia
1 2 3 4 |
n=len(lista) for i in range(n-1,-1,-1): # 8 2 9 1 print(lista[i], end=" ") print() |
Copiare
Soluzione 1
La funzione predefinita list() restituisce una lista a partire da lista, range, set, stringa, tupla, …
1 2 |
lista1 = [...] # Oppure r=range(...), t=(...), s={...}, s="..." lista2 = list(lista1) |
Soluzione 2
1 2 3 4 5 6 7 |
def copia(lista): n=len(lista) lista2=n*[0] # lista2=[0, 0, 0, 0] for i in range(n): # lista2=[1, 9, 2, 8] lista2[i]=lista[i] return lista2 |
Soluzione 3
Più sinteticamente
1 2 3 4 5 6 |
def copia(lista): lista2=[] for x in lista: lista2.append(x) return lista2 |
Capovolgere
Soluzione 1
Il metodo reverse() risolve il problema
1 2 |
lista=[1, 9, 2, 8] lista.reverse() # lista=[8, 2, 9, 1] |
Soluzione 2
Scambia ordinatamente
- primo e ultimo: [0], [n-1]
- secondo e penultimo: [1], [n-2]
- terzo e terzultimo: [2], [n-3]
- …
1 2 3 4 5 6 7 8 9 |
def capovolgi(lista): lista=[1, 9, 2, 8] n=len(lista) p2=n-1 # posizione ultimo for p1 in range(n): temp =lista[p1] lista[p1]=lista[p2] lista[p2]=temp p2-=1 |
Attenzione: non funziona!
Soluzione 3
Si scambiano gli elementi fino a metà con quelli della seconda metà
1 2 3 4 5 6 7 8 |
def capovolgi(lista): n=len(lista) p2=n-1 for p1 in range(n//2): temp =lista[p1] lista[p1]=lista[p2] lista[p2]=temp p2-=1 |
Soluzione 4
Più semplice
1 2 3 4 5 6 7 8 9 10 |
def capovolgi(lista): n=len(lista) p1=0 # posizione primo p2=n-1 # posizione ultimo while(p1 < p2): # se sono ancora "lontani" temp =lista[p1] # scambia lista[p1]=lista[p2] lista[p2]=temp p1+=1 # scala le posizioni p2-=1 |
Uguali?
Soluzione 1
L’operatore di confronto con operandi 2 liste controlla tutto
1 |
u=(lista1 == lista2) |
Soluzione 2
Per esercizio, for
1 2 3 4 5 6 7 8 9 10 11 12 |
def uguali(lista1, lista2): n1=len(lista1) n2=len(lista2) if(n1 != n2): u=False else: u=True for i in range(n1): if(lista1[i] != lista2[i]): u=False break return u |
Soluzione 3
Per esercizio, while
1 2 3 4 5 6 7 8 9 10 11 12 |
def uguali(lista1, lista2): n1=len(lista1) n2=len(lista2) if(n1 != n2): u=False else: u=True i=0 while(u) and (i < n1): u=(lista1[i] == lista2[i]) i += 1 return u |