4.1 Definizione di un array e le sue proprietà
Un array è una struttura dati che rappresenta un insieme ordinato di elementi dello stesso tipo, posizionati in celle di memoria adiacenti. Ogni elemento dell'array ha un indice unico, utilizzato per accedervi.
Qui è mostrato un semplice array di dimensione 4, che contiene gli elementi (1, 2, 3 e 4).
Proprietà degli array:
- Dimensione fissa: La dimensione di un array è stabilita al momento della sua creazione e non può cambiare durante l'esecuzione del programma.
- Omogeneità degli elementi: Tutti gli elementi di un array devono essere dello stesso tipo (ad esempio, numeri interi, stringhe).
- Posizionamento sequenziale in memoria: Gli elementi di un array sono memorizzati in celle di memoria adiacenti, garantendo un accesso rapido tramite l'indice.
- Accesso rapido tramite indice: L'accesso a qualsiasi elemento dell'array avviene in tempo costante
O(1).
4.2 Esempi di utilizzo degli array
Diamo un'occhiata ad alcuni esempi di utilizzo degli array che potresti già conoscere:
Memorizzazione di dati a lunghezza fissa
Giorni della settimana, mesi dell'anno:
# Creazione di un array con i giorni della settimana
days_of_week = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
print(days_of_week[2]) # Output: Wednesday
Matrici e array multidimensionali
Matrice 3x3:
# Creazione di una matrice 3x3
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
print(matrix[1][1]) # Output: 5
Utilizzo negli algoritmi di ordinamento
Ordinamento di un array di numeri:
# Ordinamento di un array di numeri
numbers = [5, 2, 9, 1, 5, 6]
numbers.sort() # Ordinamento dell'array
print(numbers) # Output: [1, 2, 5, 5, 6, 9]
Buffer per memorizzare dati temporanei
Buffer per la lettura dei dati da un file:
# Creazione di un buffer di dimensione 1024 byte
buffer = [0] * 1024
print(len(buffer)) # Output: 1024
4.3 Operazioni principali sugli array
Importante! La classe list in Python è un array dinamico, può cambiare la sua dimensione durante l'esecuzione. Imparerai di più sugli array dinamici in lezioni future.
Operazioni principali: accesso tramite indice, inserimento, eliminazione
Accesso tramite indice
L'accesso a un elemento dell'array avviene tramite l'indice, che indica la sua posizione.
# Accesso agli elementi dell'array tramite indice
arr = [10, 20, 30, 40, 50]
print(arr[2]) # Output: 30
print(arr[-1]) # Output: 50 (ultimo elemento)
Inserimento
L'inserimento di un elemento in un array può richiedere lo spostamento di tutti gli elementi successivi per fare spazio al nuovo elemento.
Esempio (inserimento di un elemento nel mezzo dell'array):
# Inserimento di un elemento nell'array
arr = [10, 20, 30, 40, 50]
arr.insert(2, 25) # Inserimento di 25 alla posizione 2
print(arr) # Output: [10, 20, 25, 30, 40, 50]
Eliminazione
L'eliminazione di un elemento da un array può richiedere lo spostamento di tutti gli elementi successivi per riempire lo spazio vuoto.
Esempio (eliminazione di un elemento):
# Eliminazione di un elemento dall'array
arr = [10, 20, 30, 40, 50]
arr.pop(2) # Eliminazione dell'elemento alla posizione 2
print(arr) # Output: [10, 20, 40, 50]
4.4 Vantaggi e svantaggi dell'uso degli array
Vediamo i vantaggi e gli svantaggi dell'uso degli array:
Vantaggi:
- Accesso rapido tramite indice: L'accesso a qualsiasi elemento dell'array avviene in tempo costante
O(1), il che rende gli array molto efficienti per la lettura dei dati. - Semplicità di implementazione: Gli array sono semplici da comprendere e utilizzare, facili da implementare in diversi contesti.
- Bassi overhead: Gli array occupano meno memoria rispetto a strutture dati più complesse come le liste collegate.
Svantaggi:
- Dimensione fissa: La dimensione di un array è stabilita al momento della sua creazione e non può essere cambiata. Questo significa che è necessario conoscere in anticipo la dimensione necessaria dell'array o utilizzare array dinamici che possono crescere secondo necessità.
- Costi di inserimento e eliminazione: L'inserimento e l'eliminazione di elementi possono essere costosi in termini di tempo, poiché richiedono lo spostamento degli elementi. Nel peggiore dei casi, l'inserimento o l'eliminazione di un elemento nel mezzo di un array richiede
O(n)tempo. - Uso inefficiente della memoria: Se un array non è completamente utilizzato, le celle di memoria rimanenti restano vuote, portando a un uso inefficiente della memoria.
GO TO FULL VERSION