1 / 1
Indice della lezione

Promemoria: tuple e metodi delle tuple in Python

Cosa sono le tuple

Le tuple sono strutture dati simili alle liste, ma sono immutabili: non possono essere modificate dopo la creazione.

Quando usarle:

  • Per dati che devono rimanere costanti (ID prodotti, categorie, configurazioni).
  • Quando l'integrità dei dati è essenziale.
  • Per proteggere informazioni da modifiche accidentali.

Caratteristiche fondamentali delle tuple

  1. Ordinate: mantengono l'ordine originale degli elementi.
  2. Immutabili: non si possono aggiungere, rimuovere o modificare elementi.
  3. Indicizzate: ogni elemento ha una posizione numerica (0, 1, 2, ...).
  4. Ammettono duplicati: lo stesso valore può apparire più volte.
  5. Versatili: possono contenere tipi di dati misti.

Creazione delle tuple

# Metodo 1: con parentesi tonde
grocery_aisles = ("Produce", "Dairy", "Bakery", "Meat", "Frozen Foods")

# Metodo 2: senza parentesi (tuple packing)
coordinates = 10, 20, 30

# Tupla con un solo elemento: la virgola è obbligatoria
single_item = ("apple",)
not_a_tuple = ("apple")   # è una stringa

# Tupla vuota
empty_tuple = ()

# Tupla con tipi misti
apple_details = ("apple", 34, True, 1.99, "Fuji")

Accesso agli elementi

Le tuple usano l'indicizzazione come le liste.

apple_details = ("apple", 34, True, 1.99, "Fuji")

print(apple_details[0])   # "apple"
print(apple_details[4])   # "Fuji"
print(apple_details[-1])  # "Fuji" (indice negativo)

grocery_aisles = ("Produce", "Dairy", "Bakery", "Meat", "Frozen Foods")
print("Grocery Aisles:", grocery_aisles)

Immutabilità delle tuple

Le seguenti operazioni non sono permesse:

grocery_aisles = ("Produce", "Dairy", "Bakery")

# Le istruzioni seguenti genererebbero errori:
# grocery_aisles[0] = "Vegetables"
# grocery_aisles.append("Meat")
# grocery_aisles.remove("Dairy")
# del grocery_aisles[1]

Tuple con oggetti mutabili: caso speciale

La tupla è immutabile, ma gli oggetti mutabili al suo interno, come le liste, possono essere modificati.

apple_details = (
    "apple", 34, True, 1.99, "Fuji",
    ["Washington", "California", "Michigan"]
)

print(apple_details)

# È possibile modificare la lista contenuta nella tupla
apple_details[5][2] = "Pennsylvania"
print(apple_details)

La tupla contiene ancora gli stessi sei elementi, ma il contenuto della lista al suo interno è stato modificato.

Metodi delle tuple

Le tuple hanno due metodi principali:

  • count(value): conta quante volte un valore appare nella tupla.
  • index(value): restituisce l'indice della prima occorrenza di un valore.

Metodo count(value)

fruits = ("apple", "banana", "cherry", "apple", "banana", "cherry", "apple")

apple_count = fruits.count("apple")
print("Number of times 'apple' appears:", apple_count)  # 3

banana_count = fruits.count("banana")
print("Banana count:", banana_count)  # 2

orange_count = fruits.count("orange")
print("Orange count:", orange_count)  # 0

Metodo index(value)

fruits = ("apple", "banana", "cherry", "apple", "banana", "cherry", "apple")

cherry_index = fruits.index("cherry")
print("The first occurrence of 'cherry' is at index:", cherry_index)  # 2

apple_index = fruits.index("apple")
print("Apple index:", apple_index)  # 0

# Se l'elemento non esiste, index() genera ValueError:
# orange_index = fruits.index("orange")

Esempio pratico: dettagli prodotto

spinachDetails = ("Fresh", "Organic", "Baby Spinach", 2.99, 50)

print("Descrizione:", spinachDetails[2])  # "Baby Spinach"
print("Prezzo:", spinachDetails[3])       # 2.99
print("Quantità:", spinachDetails[4])     # 50

description_index = spinachDetails.index("Baby Spinach")
print("Index of 'Baby Spinach':", description_index)  # 2

Esempio: vendite giornaliere

itemsSold = ("milk", "eggs", "milk", "bread", "eggs", "milk")

milk_sales = itemsSold.count("milk")
print("Milk sold:", milk_sales)  # 3

eggs_sales = itemsSold.count("eggs")
print("Eggs sold:", eggs_sales)  # 2

Confronto: liste e tuple

# Liste: mutabili, con parentesi quadre
inventory_list = ["apple", "banana", "cherry"]
inventory_list.append("orange")
inventory_list.remove("banana")
inventory_list[0] = "grape"

# Tuple: immutabili, con parentesi tonde
store_categories = ("Produce", "Dairy", "Bakery")
# store_categories.append("Meat")
# store_categories.remove("Dairy")
# store_categories[0] = "Vegetables"
  • Liste: quando i dati devono cambiare (inventario, carrello).
  • Tuple: quando i dati devono rimanere fissi (categorie, ID, coordinate).

Esercizi di verifica

Esercizio 1: contare occorrenze

itemsSold = ("milk", "eggs", "milk", "bread", "eggs", "milk")
print(itemsSold.count("milk"))
# Soluzione: 3

Esercizio 2: trovare un indice

spinachDetails = ("Fresh", "Organic", "Baby Spinach", 2.99, 50)
position = spinachDetails.index("Baby Spinach")
print(position)
# Soluzione: 2

Note importanti

  • Le tuple possono essere usate come chiavi nei dizionari se contengono solo elementi hashable; le liste non possono essere usate come chiavi.
  • index() restituisce solo la prima occorrenza e genera un errore se l'elemento non esiste.
  • Una tupla con un solo elemento deve avere la virgola: ("item",).
  • Gli oggetti mutabili contenuti in una tupla possono essere modificati.
← → per navigare F fullscreen