Cos'è un array?
Un array è una struttura dati che memorizza una raccolta di valori dello stesso tipo in un unico blocco continuo di memoria. A ogni valore, chiamato elemento, si arriva tramite il suo numero di posizione, chiamato indice, che nella maggior parte dei linguaggi parte da 0.
Aggiornato il 24 settembre 2026
Un'app meteo che mostra le temperature della settimana ha bisogno di sette numeri. Potrebbe usare sette variabili separate, monday, tuesday e così via, ma allora nessun ciclo potrebbe scorrerle, e aggiungere un ottavo giorno significherebbe scrivere nuovo codice. Un array mette tutti e sette i numeri sotto un unico nome, temperatures, in caselle numerate da 0 a 6.
Come funziona un array
Un array tiene i suoi elementi uno accanto all'altro in un unico blocco di memoria, e ogni elemento occupa lo stesso numero di byte. Questa disposizione permette al computer di trovare qualsiasi elemento con un solo calcolo:
address of element i = start address + i × element size
Supponi che un array di interi a 32 bit (4 byte ciascuno) inizi all'indirizzo di memoria 1000. L'elemento 0 è a 1000, l'elemento 1 a 1004, l'elemento 2 a 1008 e l'elemento 3 a 1012. Raggiungere l'elemento 3 o l'elemento 3.000.000 richiede lo stesso singolo passo, ed è per questo che leggere un array tramite indice si dice a tempo costante, scritto O(1).
Il modulo array di Python memorizza i numeri grezzi proprio così, quindi puoi verificare il calcolo:
4 bytes per element
16 bytes in total
scores[0] = 90 at address 1000
scores[1] = 75 at address 1004
scores[2] = 88 at address 1008
scores[3] = 62 at address 1012
Questa formula spiega anche perché la maggior parte dei linguaggi conta da 0. L'indice è uno scostamento: quanti elementi saltare dall'inizio. Il primo elemento dista 0 elementi dall'inizio, quindi il suo indice è 0, e l'ultimo elemento di un array di lunghezza n ha indice n − 1. Alcuni linguaggi, come Lua, MATLAB, R e Fortran, partono invece da 1.
Usare un array in Python
La maggior parte del codice Python usa la list integrata come array. La crei con le parentesi quadre, leggi e modifichi gli elementi tramite indice e ne chiedi la lunghezza con len():
18
25
19
5
[18, 22, 25, 23, 19, 20]
Un indice negativo conta dalla fine, quindi temperatures[-1] è l'ultimo elemento. Questa scorciatoia è di Python; C e Java non hanno indici negativi.
Quanto costano le operazioni su un array
La disposizione continua rende alcune operazioni veloci e altre lente. Il costo cresce con n, il numero di elementi:
| Operazione | Esempio in Python | Costo |
|---|---|---|
| Leggere o modificare un elemento tramite indice | a[3] = 7 | O(1), un passo |
| Aggiungere un elemento in fondo | a.append(7) | O(1) in media |
| Inserire o rimuovere all'inizio | a.insert(0, 7) | O(n), ogni elemento si sposta |
| Cercare un valore in un array non ordinato | 7 in a | O(n), controlla uno per uno |
| Cercare un valore in un array ordinato | ricerca binaria | O(log n) |
Inserire all'inizio è lento perché ogni elemento deve spostarsi di una casella per fare spazio. Cercare in un array non ordinato significa fare una ricerca lineare su ogni elemento a turno, mentre un array ordinato permette la ricerca binaria, che dimezza l'intervallo rimanente a ogni passo.
Scorrere un array con un ciclo
Array e cicli vanno di pari passo: un ciclo visita ogni elemento a turno, e questo si chiama iterazione. Le stesse poche righe gestiscono un array di 5 elementi o di 5 milioni.
Total: 28.5
Most expensive: 12.0
Gli array in altri linguaggi
In C, un array ha una dimensione fissa stabilita quando viene dichiarato, e contiene valori grezzi di un solo tipo. sizeof ne riporta la dimensione in byte:
int scores[5] = {90, 75, 88, 62, 100}; /* 5 × 4 bytes = 20 bytes */
Anche gli array Java hanno una lunghezza fissa, e i nuovi elementi partono da un valore predefinito come 0 per i numeri. Quando ti serve un array Java che cresce, usi ArrayList:
int[] scores = new int[5]; // five elements, all 0
scores[0] = 90;
Gli array JavaScript crescono e si riducono liberamente e possono mescolare i tipi, come in [1, "two", true].
Gli array che crescono, come la list di Python, l'ArrayList di Java e lo std::vector di C++, si chiamano array dinamici. Riservano spazio extra in fondo. Quando quello spazio finisce, allocano un blocco più grande, ci copiano dentro ogni elemento e proseguono. Le copie sono abbastanza rare da mantenere l'aggiunta veloce in media.
Un array può contenere anche altri array. grid[row][col] legge una cella di un array bidimensionale, la struttura usata per scacchiere di gioco, fogli di calcolo e immagini. La guida C agli array multidimensionali mostra come stanno in memoria.
Errori comuni
Sbagliare di uno. Un array di 3 elementi ha gli indici 0, 1 e 2, quindi l'indice 3 è oltre la fine. Python si ferma con un errore:
IndexError: list index out of range
Java lancia un'ArrayIndexOutOfBoundsException, e JavaScript restituisce in silenzio undefined. C non fa alcun controllo: leggere oltre la fine è un comportamento non definito, che può restituire dati spazzatura o far crashare il programma con un segmentation fault.
Copiare con un'assegnazione. In Python, Java e JavaScript, b = a non copia un array; entrambi i nomi si riferiscono allo stesso array, quindi modificare b modifica a. Usa a.copy() in Python o [...a] in JavaScript per una copia vera. La pagina sulle variabili spiega perché.
Cosa leggere dopo
Un array è utile solo con un ciclo che lo scorre, quindi leggi ora cos'è l'iterazione, e cos'è un byte per l'unità dietro le dimensioni degli elementi viste sopra. La guida alle liste in Python tratta slicing, ordinamento e metodi delle liste, e la visualizzazione della lista concatenata mostra la struttura che rinuncia all'accesso rapido tramite indice in cambio di inserimenti rapidi.
Domande frequenti
Cos'è un array in matematica?
Qual è un esempio di array?
[18, 21, 25, 23, 19, 17, 20], è un array di sette numeri, in cui temperatures[0] è il valore del lunedì. Altri esempi quotidiani sono i pixel di una riga di un'immagine, i caratteri di una stringa e i punteggi nella classifica di un gioco.Come si spiega un array a un bambino?
Cosa contiene un array?
int o tutti double. Le liste di Python e gli array di JavaScript possono mescolare i tipi, perché memorizzano riferimenti ai valori invece dei valori stessi.Qual è la differenza tra un array e una lista?
list integrata di Python non è una lista concatenata: è un array dinamico che cresce man mano che aggiungi elementi.