Menu
Coddy logo textTech

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.

Di Kevin Spektor, Cofondatore e CTO

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:

OperazioneEsempio in PythonCosto
Leggere o modificare un elemento tramite indicea[3] = 7O(1), un passo
Aggiungere un elemento in fondoa.append(7)O(1) in media
Inserire o rimuovere all'inizioa.insert(0, 7)O(n), ogni elemento si sposta
Cercare un valore in un array non ordinato7 in aO(n), controlla uno per uno
Cercare un valore in un array ordinatoricerca binariaO(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?
Nella matematica elementare, uno schieramento (array) è un insieme di oggetti disposti in righe e colonne uguali, per esempio 3 righe da 4 puntini. Serve a mostrare la moltiplicazione: contando i puntini si ottiene 3 × 4 = 12. Un array bidimensionale in un programma è la stessa immagine, con un valore in ogni posizione.
Qual è un esempio di array?
Un elenco con le temperature di una settimana, [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?
Paragonalo a una confezione di uova. La confezione ha un solo nome, ha un numero fisso di scomparti in fila e ogni scomparto contiene un uovo. Trovi un uovo dal numero del suo scomparto, e chi programma comincia a contare gli scomparti da 0.
Cosa contiene un array?
Un array contiene elementi, i singoli valori memorizzati al suo interno, ognuno al proprio indice. In C e in Java tutti gli elementi hanno lo stesso tipo, per esempio tutti 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?
Un array memorizza i suoi elementi uno accanto all'altro in memoria, quindi puoi raggiungere qualsiasi elemento direttamente tramite l'indice. Una lista concatenata memorizza ogni elemento separatamente con un puntatore al successivo, quindi per arrivare al millesimo elemento devi passare per i primi 999. La list integrata di Python non è una lista concatenata: è un array dinamico che cresce man mano che aggiungi elementi.
Illustrazione dei linguaggi di programmazione di Coddy

Impara a programmare con Coddy

INIZIA