
Array in Python
Gli array sono uno degli strumenti più conosciuti e utilizzati in qualsiasi linguaggio di programmazione.
Cos'é un array? Sono come delle serie di scatole ordinate dove puoi mettere ciò che vuoi. Puoi accedervi, modificarli e persino eseguire operazioni su di loro. In generale, un array è una struttura di dati che contiene una raccolta ordinata di elementi, tutti dello stesso tipo (tutti interi, tutti float, ecc.), accessibili tramite un indice numerico.
Devi sapere che in Python non c'è una struttura dati di base come gli array. C'è qualcosa di simile e forse più versatile: le liste.
Tuttavia, se vuoi definire un array vero e proprio, puoi usare i moduli Array o Numpy.
Liste in Python
Le liste sono simili agli array, ma con una differenza fondamentale: possono contenere valori di tipi diversi.
Quindi una lista potrebbe avere un numero intero in una scatola, una stringa in un'altra e persino un’altra lista in una terza scatola.
Ad esempio, ecco una lista che contiene numeri interi
numeri = [1, 2, 3, 4, 5]
Puoi anche definire una lista che contiene valori di tipi diversi
varie = [2020, "ciao", 3.14, [1, 2, 3]]
Puoi accedere a ogni elemento della lista indicando tra parentesi quadre la posizione nell'indice.
Ad esempio, per accedere al primo elemento della lista 'varie' devi scrivere varie[0]
print(varie[0])
2020
Ricorda che in Python l'indice comincia da zero.
Quindi, per accedere al secondo elemento devi scrivere varie[1] e via dicendo.
print(varie[1])
ciao
A differenza degli array tradizionali, le liste ti permettono una maggiore libertà di azione. Sono molto più flessibili.
Tuttavia, se stai lavorando con grandi quantità di dati numerici, ti consiglio di utilizzare strumenti più specifici come gli array delle librerie 'array' o 'NumPy'.
Array del modulo `array`
Se vuoi qualcosa di più simile agli array classici, Python ti offre il modulo array, che ti permette di creare array con elementi tutti dello stesso tipo (come avviene nei linguaggi a basso livello come C o Java).
Il vantaggio? Queste strutture dati hanno una maggiore efficienza in termini di memoria e migliori prestazioni per grandi quantità di dati.
Ecco un esempio di un array di numeri interi usando il modulo `array`:
Per prima cosa devi importare il modulo array in memoria.
import array
Successivamente, puoi creare qualsiasi array tu abbia bisogno.
Ad esempio, crea un array di numeri interi e memorizzalo nell'etichetta 'numeri'.
numeri = array.array('i', [1, 2, 3, 4, 5])
In questo caso il parametro `'i'` indica che l'array conterrà solo interi (`int`).
Ogni tipo di dato ha un codice specifico nel modulo array (`'f'` per float, ad esempio).
print(numeri)
array('i', [1, 2, 3, 4, 5])
Proprio come le liste, puoi accedere agli elementi dell'array con gli indici.
Gli indici sono numeri che rappresentano la posizione di ogni scatola (o cella) nell'array, e partono da 0 (quindi la prima scatola è la numero 0).
Ad esempio, per accedere al terzo elemento dell'array devi scrivere:
print(numeri[2])
3
Puoi anche modificare i valori presenti in un array esattamente come faresti con una lista:
numeri[1] = 10
Ora l'array ha il valore 10 nella seconda posizione.
print(numeri)
array('i', [1, 10, 3, 4, 5])
Quando usare gli array?
Ora, probabilmente ti starai chiedendo: "Quando dovrei usare un array invece di una lista?".
Beh, se stai lavorando con grandi quantità di dati numerici e hai bisogno di un utilizzo efficiente della memoria, gli array sono la scelta giusta.
Ad esempio, per gestire centinaia di migliaia di numeri, gli array del modulo `array` o, meglio ancora, quelli della libreria NumPy (che è più potente) sono decisamente più efficienti delle liste.
Array con NumPy
Se vuoi fare calcoli matematici seri con array, ti consiglio di dare un'occhiata a NumPy, una libreria esterna che offre array multidimensionali molto più efficienti e potenti delle liste e degli array di base di Python.
Ecco come si crea un array con NumPy.
Per prima cosa, importa la libreria Numpy in memoria.
import numpy as np
Poi crea un array tramite il metodo array di NumPy
numeri = np.array([1, 2, 3, 4, 5])
Anche in questo caso ottieni un vettore composto da valori numerici.
print(numeri)
[1 2 3 4 5]
A differenza delle liste e degli array di base, NumPy ti permette di eseguire operazioni vettoriali veloci ed efficienti:
Ad esempio, puoi moltiplicare per due tutti gli elementi dell'array in un colpo solo!
numeri = numeri * 2
print(numeri)
[ 2 4 6 8 10]
È molto più efficiente e conveniente quando devi fare operazioni matematiche su grandi dataset.
Inoltre, puoi anche creare degli array multidimensionali.
Ad esempio, crea una matrice 3x3.
matrice = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
In questo modo ottieni un array bidimensionale con tre righe e tre colonne
print(matrice)
[[1 2 3]
[4 5 6]
[7 8 9]]
Puoi accedere agli elementi di questa matrice usando indici, esattamente come faresti con una lista di liste:
Ad esempio, accedi al secondo elemento della prima riga.
print(matrice[0, 1])
2
Questa è solo un semplice esempio di ciò che puoi realizzare con NumPy.
Se lavori spesso con le matrici e l'algebra lineare, la libreria NumPy è uno strumento indispensabile su Python.
Ti permette di gestire facilmente matrici e fare operazioni matriciali o vettorial in modo più efficiente.