Array (Liste come array)
Array e liste in Python
Sezione intitolata “Array e liste in Python”In linguaggi come C++ o Java, un array è una sequenza di elementi dello stesso tipo, indicizzati a partire da 0. In Python questo ruolo è svolto nella maggior parte dei casi dalle liste, che sono più flessibili.
Le liste come array
Sezione intitolata “Le liste come array”Per gli usi generici, le liste Python si comportano come array:
# Una sequenza di numeri interi, con indici 0, 1, 2, 3, 4numeri = [10, 20, 30, 40, 50]
# Accedere a un elemento tramite il suo indice (la posizione)print(numeri[0]) # 10 ← primo elementoprint(numeri[2]) # 30 ← terzo elementoprint(numeri[-1]) # 50 ← ultimo elemento (si conta da destra)
# Modificare un elementonumeri[1] = 25print(numeri) # [10, 25, 30, 40, 50]Il modulo array: più efficiente per grandi quantità di numeri
Sezione intitolata “Il modulo array: più efficiente per grandi quantità di numeri”Il modulo array offre array che usano meno memoria delle liste. A differenza delle liste, possono contenere solo elementi dello stesso tipo.
import array
# Crea un array di interi ('i' = integer)numeri = array.array('i', [1, 2, 3, 4, 5])
print(numeri) # array('i', [1, 2, 3, 4, 5])print(numeri[0]) # 1
numeri.append(6) # Aggiunge un elemento in fondoprint(numeri) # array('i', [1, 2, 3, 4, 5, 6])
numeri.insert(2, 99) # Inserisce 99 alla posizione 2print(numeri) # array('i', [1, 2, 99, 3, 4, 5, 6])
numeri.remove(99) # Rimuove la prima occorrenza di 99print(numeri) # array('i', [1, 2, 3, 4, 5, 6])I codici tipo più usati:
| Codice | Tipo | Descrizione |
|---|---|---|
'i' |
int | Numero intero |
'l' |
long | Numero intero lungo |
'f' |
float | Numero decimale (singola precisione) |
'd' |
double | Numero decimale (doppia precisione) |
Matrici: array a due dimensioni
Sezione intitolata “Matrici: array a due dimensioni”Una matrice è una tabella con righe e colonne. In Python puoi rappresentarla come una lista di liste:
# Una tabella 3×3matrice = [ [1, 2, 3], # riga 0 [4, 5, 6], # riga 1 [7, 8, 9] # riga 2]
# Accedere a un elemento: prima la riga, poi la colonnaprint(matrice[0][0]) # 1 ← riga 0, colonna 0print(matrice[1][2]) # 6 ← riga 1, colonna 2print(matrice[2]) # [7, 8, 9] ← tutta la riga 2
# Modificare un elementomatrice[1][1] = 99print(matrice[1]) # [4, 99, 6]Scorrere un array (o una matrice) con for
Sezione intitolata “Scorrere un array (o una matrice) con for”numeri = [10, 20, 30, 40, 50]
# Scorrere tutti gli elementifor n in numeri: print(n)
# Scorrere con l'indicefor i in range(len(numeri)): print(f"numeri[{i}] = {numeri[i]}")
# Scorrere una matrice riga per riga, elemento per elementomatrice = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]for riga in matrice: for elemento in riga: print(elemento, end=" ") # Stampa sulla stessa riga print() # Va a capo dopo ogni rigaOperazioni comuni
Sezione intitolata “Operazioni comuni”numeri = [5, 2, 8, 1, 9, 3]
print(max(numeri)) # 9: il valore più grandeprint(min(numeri)) # 1: il valore più piccoloprint(sum(numeri)) # 28: la somma di tuttiprint(len(numeri)) # 6: quanti elementi ci sonoprint(sorted(numeri)) # [1, 2, 3, 5, 8, 9]: copia ordinataQuando usare NumPy invece delle liste?
Sezione intitolata “Quando usare NumPy invece delle liste?”Le liste Python sono sufficienti per molti usi. Per calcoli matematici su grandi quantità di numeri, come la media di 10.000 valori o la moltiplicazione di matrici, usa NumPy.
NumPy fa le stesse cose delle liste, ma è molto più veloce per i calcoli numerici intensivi. Lo vedremo nella sezione dedicata all’ecosistema Python.