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).
- Questo articolo sull’IA introduce il punteggio di ragionamento influenzato dalla complessità (CIRS) valutare il ruolo della complessità del codice nel migliorare le capacità di ragionamento dei grandi modelli di linguaggio
- Ricercatori dell’Università di Yokohama propongono VirSen1.0 un ambiente virtuale per ottimizzare lo sviluppo di sistemi di riconoscimento dei gesti umani basati su sensori.
- Un algoritmo di apprendimento ispirato al cervello consente metaplasticità nelle reti neurali artificiali e spiking
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 locoappend()
– Aggiunge un elemento alla fine della listainsert()
– Inserisce un elemento all’indice specificatopop()
– Rimuove l’elemento all’indice specificatoremove()
– Rimuove la prima occorrenza del valore specificatoreverse()
– 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 chiavivalues()
– Restituisce una lista di valoriitems()
– Restituisce una lista di tuple (chiave, valore)get()
– Restituisce il valore per la chiave, evita KeyErrorpop()
– Rimuove la chiave e restituisce il valoreupdate()
– 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 setintersection()
– Restituisce l’intersezione dei setdifference()
– Restituisce la differenza tra i setsymmetric_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 | Sì | Sì | Sì | Memorizzazione di sequenze |
Tuple | Sì | No | Sì | Memorizzazione di sequenze immutabili |
Dizionario | No | Sì | Chiavi: NoValori: Sì | Memorizzazione di coppie chiave-valore |
Set | No | Sì | 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.