Cosa sono le strutture dati
Cosa sono le strutture dati spiegate semplice: array, liste, dizionari, stack e code. Esempi di codice e quando usare ognuna per scrivere programmi migliori.
Quando inizi a programmare ti accorgi presto che gestire i dati nel modo giusto fa tutta la differenza. Salvare una lista di nomi, associare un prezzo a un prodotto, gestire una coda di operazioni: per ognuna di queste cose esiste lo strumento giusto.
In questo articolo ti spiego cosa sono le strutture dati, quali sono le più comuni e quando usarle, con esempi di codice semplici.
Cosa sono le strutture dati in parole semplici
Una struttura dati è un modo organizzato di memorizzare e gestire dati in un programma, scelto in base a come hai bisogno di accedere a quei dati e modificarli. In pratica è il "contenitore" giusto per le informazioni che stai trattando.
Immagina di dover organizzare degli oggetti in casa. Per i libri usi una libreria, per i calzini un cassetto, per i documenti importanti uno schedario. Ogni contenitore è ottimizzato per un uso diverso. Le strutture dati funzionano allo stesso modo nel codice.
Le strutture dati più comuni
Array e liste
Sono la struttura più intuitiva: una sequenza ordinata di elementi a cui accedi tramite un indice numerico.
frutta = ["mela", "banana", "ciliegia"]
print(frutta[0]) # mela
frutta.append("uva") # aggiungo in fondo
Usa le liste quando l'ordine conta e vuoi scorrere gli elementi uno a uno.
Dizionari (mappe)
Un dizionario associa una chiave a un valore. Perfetto quando vuoi cercare qualcosa rapidamente per nome invece che per posizione.
prezzi = {"mela": 0.50, "banana": 0.30}
print(prezzi["mela"]) # 0.50
prezzi["uva"] = 0.80 # aggiungo una nuova coppia
Cercare un valore per chiave è quasi istantaneo, anche con milioni di elementi.
Stack (pile)
Uno stack segue la regola LIFO (Last In, First Out): l'ultimo elemento inserito è il primo a uscire, come una pila di piatti.
pila = []
pila.append("A") # inserisco
pila.append("B")
print(pila.pop()) # B, l'ultimo entrato esce per primo
Gli stack si usano per gestire il pulsante "indietro" del browser o l'annulla (undo) negli editor.
Code (queue)
Una coda segue la regola FIFO (First In, First Out): il primo arrivato è il primo servito, come alla cassa del supermercato.
from collections import deque
coda = deque()
coda.append("primo")
coda.append("secondo")
print(coda.popleft()) # primo
Le code servono a gestire stampe in attesa, messaggi da elaborare e molto altro.
Perché scegliere la struttura giusta conta
La stessa operazione può essere velocissima o lentissima a seconda della struttura che usi. Cercare un nome in una lista significa scorrerla tutta; cercarlo in un dizionario è immediato. Questa differenza di efficienza si misura con la notazione Big O, che ti dice come cresce il costo di un'operazione all'aumentare dei dati.
Ecco una guida rapida:
- Liste: dati ordinati da scorrere o accedere per posizione.
- Dizionari: ricerche rapide per chiave univoca.
- Stack: quando ti serve l'ultimo elemento inserito.
- Code: quando serve rispettare l'ordine di arrivo.
Strutture dati e algoritmi vanno insieme
Strutture dati e algoritmi sono due facce della stessa medaglia. Un buon algoritmo sfrutta la struttura dati giusta per essere efficiente. Per questo, quando studi la programmazione, conviene impararli insieme: prima capisci come organizzare i dati, poi come manipolarli al meglio.
Molti linguaggi offrono queste strutture già pronte. In Python e in JavaScript, per esempio, liste e dizionari sono integrati e pronti all'uso fin dal primo giorno.
In sintesi
Le strutture dati sono i contenitori che usi per organizzare le informazioni nei tuoi programmi. Array, dizionari, stack e code coprono la maggior parte dei casi quotidiani, e scegliere quella giusta rende il codice più semplice ed efficiente.
Vuoi imparare a usare le strutture dati con esercizi pratici e in modo guidato? Trovi tutto nei corsi di CodeGrind, pensati per chi parte da zero.