Le Strutture Dati in Python: Una Guida Completa con Esempi

  



Python offre diverse strutture dati integrate che permettono di gestire, organizzare e manipolare i dati in modo efficiente. Comprendere le strutture dati è fondamentale per scrivere codice ottimizzato e performante.

🔗 Ti piace Techelopment? Dai un’occhiata al sito per tutti i dettagli!

Elenco delle strutture dati

Le strutture dati disponibili in Python si dividono principalmente in:
  • Liste: collezioni ordinate e mutabili (possono essere modificate dopo la loro creazione e mantengono l'ordine di inserimento).

  • Tuple: simili alle liste, ma immutabili (non possono essere modificate dopo la creazione).

  • Dizionari: collezioni non ordinate di coppie chiave-valore (a partire da Python 3.7 mantengono l'ordine di inserimento, ma non permettono chiavi duplicate).

  • Insiemi: collezioni di elementi unici, non ordinati (non conservano l'ordine di inserimento e non consentono duplicati).

  • Code: strutture dati FIFO (First In, First Out, dove il primo elemento inserito è il primo a essere rimosso).

  • Pile: strutture dati LIFO (Last In, First Out, dove l'ultimo elemento inserito è il primo a essere rimosso).

Di seguito, analizzeremo nel dettaglio ciascuna di queste strutture con esempi pratici.

1. Liste

Le liste in Python sono collezioni ordinate e mutabili, che possono contenere elementi di tipi diversi. "Ordinata" significa che l'ordine degli elementi rimane invariato, mentre "mutabile" indica che gli elementi possono essere aggiunti, rimossi o modificati.

Esempio

# Creating a list
fruits = ["apple", "banana", "orange"]

# Adding an element
fruits.append("kiwi")

# Removing an element
fruits.remove("banana")

# Accessing an element
print(fruits[0])  # Output: apple

2. Tuple

Le tuple sono simili alle liste, ma sono immutabili. "Immutabile" significa che, una volta creata, una tupla non può essere modificata (non è possibile aggiungere, rimuovere o cambiare elementi).

Esempio

# Creating a tuple
coordinates = (10, 20)

# Accessing elements
x, y = coordinates
print(x)  # Output: 10
print(y)  # Output: 20

# Direct access to elements
print(coordinates[0])  # Output: 10
print(coordinates[1])  # Output: 20

3. Dizionari

I dizionari sono collezioni non ordinate e mutabili di coppie chiave-valore. Tuttavia, a partire da Python 3.7, l'ordine di inserimento viene mantenuto. Ogni chiave è univoca e consente un accesso rapido ai valori corrispondenti.

Esempio

# Creating a dictionary
person = {"name": "Mario", "age": 30, "city": "Rome"}

# Accessing values
print(person["name"])  # Output: Mario

# Adding a new element
person["profession"] = "engineer"

# Removing an element
del person["city"]

# Updating an element
person["age"] = 31

4. Insiemi (Set)

Gli insiemi sono collezioni non ordinate e mutabili di elementi unici. "Non ordinato" significa che gli elementi non hanno un ordine fisso, mentre "mutabile" indica che gli elementi possono essere aggiunti o rimossi. Inoltre, "unico" indica che non possono esistere duplicati.

Esempio

# Creating a set
numbers = {1, 2, 3, 4}

# Adding an element
numbers.add(5)

# Removing an element
numbers.remove(3)

# Checking if an element exists
print(2 in numbers)  # Output: True

# Union of two sets
other_numbers = {3, 4, 5, 6}
union = numbers | other_numbers
print(union)  # Output: {1, 2, 3, 4, 5, 6}

# Intersection of two sets
intersection = numbers & other_numbers
print(intersection)  # Output: {4, 5}

5. Code

Le code (queue) sono strutture dati FIFO (First In, First Out), ovvero il primo elemento inserito è il primo a essere rimosso. Python fornisce il modulo queue per gestirle in modo efficiente.

Esempio

from queue import Queue

# Creating a queue
queue = Queue()

# Adding elements
queue.put("a")
queue.put("b")
queue.put("c")

# Removing an element
print(queue.get())  # Output: a

6. Pile

Le pile (stack) seguono la logica LIFO (Last In, First Out), dove l'ultimo elemento inserito è il primo a essere rimosso. Possono essere implementate con liste o con queue.LifoQueue.

Esempio

from queue import LifoQueue

# Creating a stack
stack = LifoQueue()

# Adding elements
stack.put("x")
stack.put("y")
stack.put("z")

# Removing the last added element
print(stack.get())  # Output: z


Tabella Riepilogativa

(*) A partire da Python 3.7, i dizionari mantengono l'ordine di inserimento, ma tecnicamente non sono considerati "ordinati" come liste o tuple.

Le Code e le Pile seguono un ordine logico per l'inserimento e la rimozione degli elementi (FIFO per le code, LIFO per le pile), ma non permettono accesso arbitrario agli elementi basato su un indice come le liste o le tuple. Per questo motivo, tecnicamente non vengono considerate strutture dati ordinate nel senso tradizionale, anche se hanno un ordine di elaborazione predefinito.


Follow me #techelopment

Official site: www.techelopment.it
facebook: Techelopment
instagram: @techelopment
X: techelopment
Bluesky: @techelopment
telegram: @techelopment_channel
whatsapp: Techelopment
youtube: @techelopment