CodeGym /Corsi /Python SELF IT /Array Dinamici

Array Dinamici

Python SELF IT
Livello 52 , Lezione 3
Disponibile

10.1 Caratteristiche degli array dinamici

Array dinamici — strutture di dati che possono cambiare dimensione durante l'esecuzione del programma. Permettono di gestire in modo efficiente una collezione di elementi, aggiungendo e rimuovendo elementi senza la necessità di definire la dimensione dell'array in anticipo.

In Python l'array dinamico è la lista (classe integrata list), che consente di aggiungere, rimuovere e modificare elementi in posizioni arbitrari.

Caratteristiche degli array dinamici Python

Caratteristiche degli array dinamici:

  • Dimensione variabile: Gli array dinamici possono aumentare e diminuire secondo necessità.
  • Accesso rapido per indice: L'accesso agli elementi avviene in tempo costante O(1).
  • Gestione automatica della memoria: Python gestisce automaticamente l'allocazione e liberazione della memoria per le liste.
  • Metodi comodi per lavorare con gli elementi: I metodi integrati consentono di aggiungere, rimuovere e modificare facilmente gli elementi.

Esempio di creazione e utilizzo di un array dinamico in Python:


# Creazione della lista
dynamic_array = [1, 2, 3, 4, 5]

# Aggiunta di un elemento
dynamic_array.append(6)
print(dynamic_array)  # Output: [1, 2, 3, 4, 5, 6]

# Rimozione di un elemento
dynamic_array.remove(3)
print(dynamic_array)  # Output: [1, 2, 4, 5, 6]

# Accesso per indice
print(dynamic_array[2])  # Output: 4

# Modifica di un elemento
dynamic_array[2] = 10
print(dynamic_array)  # Output: [1, 2, 10, 5, 6]

10.2 Vantaggi e svantaggi degli array dinamici

Gli array dinamici hanno i loro vantaggi e svantaggi. Esaminiamoli più in dettaglio.

Vantaggi:

  • Flessibilità: Gli array dinamici possono cambiare dimensione a seconda delle necessità del programma, permettendo di gestire efficacemente la memoria e di gestire volumi variabili di dati.
  • Accesso rapido per indice: Come gli array statici, anche gli array dinamici permettono un rapido accesso agli elementi per indice in tempo costante O(1).
  • Facilità d'uso: I metodi integrati di Python per lavorare con le liste (ad esempio, append, remove, insert) semplificano la manipolazione degli elementi e rendono il codice più leggibile e manutenibile.
  • Gestione automatica della memoria: Python gestisce automaticamente la memoria per gli array dinamici, liberando il programmatore dalla necessità di allocare e liberare manualmente la memoria.

Svantaggi:

  • Ridistribuzione della memoria: Quando aumenti la dimensione di un array dinamico, potrebbe essere necessario ridistribuire la memoria, il che comporta la copia degli elementi in una nuova area di memoria. Questo potrebbe temporaneamente rallentare l'esecuzione del programma.
  • Costi per l'inserimento e la rimozione degli elementi: L'inserimento e la rimozione di elementi nel mezzo dell'array richiedono lo spostamento degli elementi, il che richiede un tempo O(n).
  • Piccole spese generali di gestione: Rispetto ai linguaggi di basso livello, come C, gli array dinamici in Python hanno costi generali aggiuntivi associati alla gestione automatica della memoria e alla gestione delle eccezioni.

10.3 Esempi di utilizzo e applicazione

Esaminiamo alcuni esempi di utilizzo degli array dinamici in Python.

1. Implementazione di una lista dinamica di compiti:


tasks = []

# Aggiunta di compiti
tasks.append("Compito 1")
tasks.append("Compito 2")
tasks.append("Compito 3")

# Completamento di un compito e rimozione dalla lista
completed_task = tasks.pop(0)
print(f"Completato: {completed_task}")
print(f"Compiti rimanenti: {tasks}")  # Output: Compiti rimanenti: ['Compito 2', 'Compito 3']

2. Implementazione di una lista dinamica di oggetti:


students = []

# Aggiunta di studenti
students.append("Alice")
students.append("Bob")
students.append("Charlie")

# Rimozione di uno studente
students.remove("Bob")
print(f"Studenti dopo la rimozione: {students}")  # Output: Studenti dopo la rimozione: ['Alice', 'Charlie']

# Aggiunta di uno studente in una posizione specifica
students.insert(1, "David")
print(f"Studenti dopo l'inserimento: {students}")  # Output: Studenti dopo l'inserimento: ['Alice', 'David', 'Charlie']
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION