Iniziare con le strutture dati di Python in 5 passaggi

Iniziare con le strutture dati di Python in 5 passaggi' means 'Getting started with Python data structures in 5 steps.

 

Introduzione alle strutture dati in Python

 

Quando si tratta di imparare a programmare, indipendentemente dal linguaggio di programmazione scelto per questa attività, si scopre che ci sono alcuni argomenti principali della disciplina scelta in cui la maggior parte di ciò a cui si viene esposti può essere categorizzata. Alcuni di questi, in ordine generale di comprensione, sono: sintassi (il vocabolario del linguaggio); comandi (mettere insieme il vocabolario in modi utili); controllo del flusso (come guidiamo l’ordine di esecuzione dei comandi); algoritmi (i passi che compiamo per risolvere problemi specifici… come mai questa parola è diventata così confusa?); e, infine, strutture dati (i depositi di archiviazione virtuali che utilizziamo per la manipolazione dei dati durante l’esecuzione degli algoritmi (che sono, ancora una volta… una serie di passi).

In sostanza, se si desidera implementare la soluzione di un problema, unendo una serie di comandi ai passi di un algoritmo, a un certo punto sarà necessario elaborare i dati e le strutture dati diventeranno essenziali. Tali strutture dati forniscono un modo per organizzare e archiviare dati in modo efficiente e sono fondamentali per creare codice rapido, modulare, che può eseguire funzioni utili e scalare bene. Python, un particolare linguaggio di programmazione, ha una serie di strutture dati integrate proprie.

In questo tutorial ci concentreremo su queste quattro strutture dati fondamentali in Python:

  • Liste – Ordinate, modificabili, consentono elementi duplicati. Utili per memorizzare sequenze di dati.
  • Tuple – Ordinate, immutabili, consentono elementi duplicati. Pensate a esse come liste immutabili.
  • Dizionari – Non ordinati, modificabili, mappati da coppie chiave-valore. Utili per memorizzare dati in un formato chiave-valore.
  • Insiemi – Non ordinati, modificabili, contengono elementi unici. Utili per il test di appartenenza ed eliminazione dei duplicati.

Oltre alle strutture dati fondamentali, Python fornisce anche strutture più avanzate, come heap, code e liste collegate, che possono migliorare ulteriormente le capacità di programmazione. Queste strutture avanzate, costruite su quelle fondamentali, consentono una gestione dei dati più complessa e vengono spesso utilizzate in scenari specializzati. Ma qui non siete limitati; potete utilizzare tutte le strutture esistenti come base per implementare le vostre strutture personalizzate. Tuttavia, la comprensione di liste, tuple, dizionari e insiemi rimane fondamentale, in quanto sono i mattoni fondamentali per strutture dati più avanzate.

Questa guida mira a fornire una comprensione chiara e concisa di queste strutture fondamentali. Mentre iniziate il vostro viaggio in Python, le sezioni seguenti vi guideranno attraverso i concetti essenziali e le applicazioni pratiche. Dalla creazione e manipolazione delle liste alla sfruttamento delle capacità uniche degli insiemi, questo tutorial vi doterà delle competenze necessarie per eccellere nella vostra programmazione.

 

Passo 1: Utilizzare le Liste in Python

 

Cos’è una Lista in Python?

 

Una lista in Python è un tipo di dato ordinato e modificabile che può memorizzare vari oggetti, consentendo elementi duplicati. Le liste sono definite dall’uso di parentesi quadre [ ], con gli elementi separati da virgole.

Ad esempio:

fibs = [0, 1, 1, 2, 3, 5, 8, 13, 21]

 

Le liste sono incredibilmente utili per organizzare e memorizzare sequenze di dati.

 

Creazione di una Lista

 

Le liste possono contenere diversi tipi di dati, come stringhe, interi, booleani, ecc. Ad esempio:

mixed_list = [42, "Ciao Mondo!", False, 3.14159]

 

Manipolazione di una Lista

 

Gli elementi di una lista possono essere accessati, aggiunti, modificati e rimossi. Ad esempio:

# Accedi al secondo elemento (l'indicizzazione inizia da '0')
print(mixed_list[1])

# Aggiungi un elemento
mixed_list.append("Questo è nuovo")

# Modifica un elemento
mixed_list[0] = 5

# Rimuovi l'ultimo elemento
mixed_list.pop(0)

 

Metodi Utili per le Liste

 

Alcuni metodi utili incorporati per le liste includono:

  • sort() – Ordina la lista in loco
  • append() – Aggiunge un elemento alla fine della lista
  • insert() – Inserisce un elemento all’indice specificato
  • pop() – Rimuove l’elemento all’indice specificato
  • remove() – Rimuove la prima occorrenza del valore specificato
  • reverse() – Inverte la lista in loco

 

Esempio pratico con le liste

 

# Crea un carrello della spesa come lista
carrello = ["mele", "arance", "uva"]

# Ordina la lista
carrello.sort()

# Aggiungi un nuovo elemento
carrello.append("mirtilli")

# Rimuovi il primo elemento
carrello.pop(0)

print(carrello)

 

Output:

['uva', 'arance', 'mirtilli']

 

Passo 2: Comprensione delle Tuple in Python

 

Cosa sono le Tuple?

 

Le tuple sono un altro tipo di sequenza di dati in Python, simili alle liste. Tuttavia, a differenza delle liste, le tuple sono immutabili, il che significa che i loro elementi non possono essere modificati una volta creati. Sono definite racchiudendo gli elementi tra parentesi ( ).

# Definizione di una tupla
mia_tupla = (1, 2, 3, 4)

 

Quando utilizzare le Tuple

 

Le tuple sono generalmente utilizzate per collezioni di elementi che non devono essere modificati. Le tuple sono più veloci delle liste, il che le rende ottime per operazioni di sola lettura. Alcuni casi d’uso comuni includono:

  • Memorizzazione di costanti o dati di configurazione
  • Valori restituiti dalle funzioni con più componenti
  • Chiavi di un dizionario, poiché sono hashabili

 

Accesso agli Elementi della Tupla

 

L’accesso agli elementi di una tupla avviene in modo simile all’accesso agli elementi di una lista. L’indicizzazione e lo slicing funzionano allo stesso modo.

# Accesso agli elementi
primo_elemento = mia_tupla[0]
tupla_slicata = mia_tupla[1:3]

 

Operazioni sulle Tuple

 

Poiché le tuple sono immutabili, molte operazioni delle liste come append() o remove() non sono applicabili. Tuttavia, è ancora possibile eseguire alcune operazioni:

  • Concatenazione: Combina le tuple utilizzando l’operatore +.
tupla_concatenata = mia_tupla + (5, 6)
  • Ripetizione: Ripeti una tupla utilizzando l’operatore *.
tupla_ripetuta = mia_tupla * 2
  • Appartenenza: Verifica se un elemento esiste in una tupla con la parola chiave in.
esiste = 1 in mia_tupla

 

Metodi delle Tuple

 

Le tuple hanno meno metodi incorporati rispetto alle liste, data la loro natura immutabile. Alcuni metodi utili includono:

  • count(): Conta le occorrenze di un determinato elemento.
conteggio_di_uni = mia_tupla.count(1)
  • index(): Trova l’indice della prima occorrenza di un valore.
indice_della_prima_una = mia_tupla.index(1)

 

Imballaggio e Disimballaggio delle Tuple

 

L’imballaggio e il disimballaggio delle tuple sono funzionalità comode in Python:

  • Imballaggio: Assegnare valori multipli a una singola tupla.
tupla_imballata = 1, 2, 3
  • Svincolare: Assegnare gli elementi della tupla a più variabili.
a, b, c = tupla_imballata

Immutabile ma non strettamente

Anche se le tuple stesse sono immutabili, possono contenere elementi mutabili come le liste.

# Tupla con lista mutabile
tupla_complessa = (1, 2, [3, 4])

Si noti che mentre non è possibile modificare la tupla stessa, è possibile modificare gli elementi mutabili al suo interno.

Passo 3: Padronanza dei dizionari in Python

Cos’è un dizionario in Python?

Un dizionario in Python è un tipo di dato non ordinato e mutabile che memorizza associazioni di chiavi univoche a valori. I dizionari sono scritti con parentesi graffe { } e sono composti da coppie chiave-valore separate da virgole.

Ad esempio:

studente = {"nome": "Michael", "età": 22, "città": "Chicago"}

I dizionari sono utili per memorizzare dati in modo strutturato e accedere ai valori tramite le chiavi.

Creazione di un dizionario

Le chiavi del dizionario devono essere oggetti immutabili come stringhe, numeri o tuple. I valori del dizionario possono essere qualsiasi oggetto.

studente = {"nome": "Susan", "età": 23}

prezzi = {"latte": 4.99, "pane": 2.89}

Manipolazione di un dizionario

Gli elementi possono essere accessi, aggiunti, modificati e rimossi tramite le chiavi.

# Accedi al valore tramite la chiave
print(studente["nome"])

# Aggiungi nuova chiave-valore
studente["specializzazione"] = "scienze informatiche"  

# Modifica il valore
studente["età"] = 25

# Rimuovi chiave-valore
del studente["città"]

Metodi utili del dizionario

Alcuni utili metodi incorporati includono:

  • keys() – Restituisce una lista di chiavi
  • values() – Restituisce una lista di valori
  • items() – Restituisce una lista di tuple (chiave, valore)
  • get() – Restituisce il valore per la chiave, evita KeyError
  • pop() – Rimuove la chiave e restituisce il valore
  • update() – Aggiunge più chiavi-valori

Esempio pratico con i dizionari

voti = {"Francesco": 95, "Giovanni": 88, "Daniele": 82}

# Aggiungi nuovo voto
voti["Zoey"] = 97

# Rimuovi il voto di Giovanni
voti.pop("Giovanni")  

# Ottieni il voto di Daniele
print(voti.get("Daniele"))

# Stampa tutti i nomi degli studenti 
print(voti.keys())

Passo 4: Esplorazione degli insiemi in Python

Cos’è un insieme in Python?

Un insieme in Python è una collezione non ordinata e mutabile di oggetti unici e immutabili. Gli insiemi sono scritti con parentesi graffe { } ma, a differenza dei dizionari, non hanno coppie chiave-valore.

Ad esempio:

numeri = {1, 2, 3, 4}

Gli insiemi sono utili per testare l’appartenenza, eliminare duplicati e operazioni matematiche.

Creazione di un insieme

 

I set possono essere creati dalle liste passandole al costruttore set():

my_list = [1, 2, 3, 3, 4]
my_set = set(my_list) # {1, 2, 3, 4}

 

I set possono contenere tipi di dati misti come stringhe, booleani, ecc.

 

Manipolazione di un Set

 

Gli elementi possono essere aggiunti e rimossi dai set.

numbers.add(5) 

numbers.remove(1)

 

Operazioni utili sui Set

 

Alcune operazioni utili sui set includono:

  • union() – Restituisce l’unione di due set
  • intersection() – Restituisce l’intersezione dei set
  • difference() – Restituisce la differenza tra i set
  • symmetric_difference() – Restituisce la differenza simmetrica

 

Esempio pratico con i Set

 

A = {1, 2, 3, 4}
B = {2, 3, 5, 6}

# Unione - combina i set
print(A | B) 

# Intersezione
print(A & B)

# Differenza
print(A - B)

# Differenza simmetrica
print(A ^ B)

 

Passaggio 5: Confronto tra Liste, Dizionari e Set

 

Confronto delle Caratteristiche

 

Di seguito è riportato un confronto conciso delle quattro strutture dati di Python di cui abbiamo parlato in questo tutorial.

Struttura Ordinato Mutabile Elementi duplicati Casi d’uso
Lista Memorizzazione di sequenze
Tuple No Memorizzazione di sequenze immutabili
Dizionario No Chiavi: NoValori: Sì Memorizzazione di coppie chiave-valore
Set No No Eliminazione di duplicati, test di appartenenza

 

Quando utilizzare ogni struttura dati

 

Considera questo come una linea guida generale su quale struttura utilizzare in determinate situazioni.

  • Utilizza le liste per dati ordinati basati su sequenze. Utili per pile/code.
  • Utilizza le tuple per sequenze ordinate immutabili. Utili quando hai una collezione fissa di elementi che non devono essere modificati.
  • Utilizza i dizionari per dati chiave-valore. Utili per memorizzare proprietà correlate.
  • Utilizza i set per memorizzare elementi unici e operazioni matematiche.

 

Esempio pratico utilizzando tutte e quattro le strutture dati

 

Diamo un’occhiata a come queste strutture possono funzionare tutte insieme in un esempio un po’ più complesso di una riga singola.

# Creare una lista di nomi di persone
names = ["John", "Mary", "Bob", "Mary", "Sarah"]

# Creare una tupla di informazioni aggiuntive (ad esempio, l'email)
additional_info = ("[email protected]", "[email protected]", "[email protected]", "[email protected]", "[email protected]")

# Creare un set per rimuovere i duplicati
unique_names = set(names)

# Creare un dizionario di coppie nome-età
persons = {}
for name in unique_names:
  persons[name] = random.randint(20,40)

print(persons)

 

Output:

{'John': 34, 'Bob': 29, 'Sarah': 25, 'Mary': 21}

 

Questo esempio utilizza una lista per una sequenza ordinata, una tupla per memorizzare informazioni aggiuntive immutabili, un set per rimuovere i duplicati e un dizionario per memorizzare coppie chiave-valore.

 

Andare Avanti

 

In questo tutorial completo, abbiamo esaminato in dettaglio le strutture dati fondamentali in Python, inclusi liste, tuple, dizionari e set. Queste strutture formano i mattoni di base della programmazione in Python, fornendo un framework per l’archiviazione, l’elaborazione e la manipolazione dei dati. Comprendere queste strutture è essenziale per scrivere codice efficiente e scalabile. Dalla manipolazione di sequenze con le liste, all’organizzazione dei dati con coppie chiave-valore nei dizionari e all’assicurazione dell’unicità con i set, questi strumenti essenziali offrono un’enorme flessibilità nella gestione dei dati.

Come abbiamo visto attraverso esempi di codice, queste strutture dati possono essere combinate in vari modi per risolvere problemi complessi. Sfruttando queste strutture dati, è possibile aprire le porte a una vasta gamma di possibilità nell’analisi dei dati, nell’apprendimento automatico e oltre. Non esitate a esplorare la documentazione ufficiale sulle strutture dati di Python per ulteriori approfondimenti.

Happy coding!

    Matthew Mayo (@mattmayo13) ha una laurea magistrale in informatica e un diploma di laurea in data mining. Come Editor-in-Chief di VoAGI, Matthew si impegna a rendere accessibili concetti complessi di data science. I suoi interessi professionali includono l’elaborazione del linguaggio naturale, gli algoritmi di apprendimento automatico e l’esplorazione dell’intelligenza artificiale emergente. È guidato da una missione di democratizzare la conoscenza nella comunità della data science. Matthew programma sin da quando aveva 6 anni.