Liste Annidate

Le liste annidate sono liste che contengono altre liste al loro interno. Questa struttura permette di organizzare dati complessi e correlati in modo ordinato. È particolarmente utile quando ogni elemento deve racchiudere attributi multipli, come il nome, il prezzo, la quantità e la tipologia di un prodotto.


📌 Come funzionano le liste annidate

Per lavorare con queste strutture, si usa l’indicizzazione multipla:

  • Il primo indice seleziona la sottolista.
  • Il secondo indice seleziona il dettaglio all’interno della sottolista.

Esempio:

grocery_list[2][1]

Qui:

  • grocery_list[2] seleziona l’elemento alla posizione 2 (la sottolista “milk”)
  • [1] seleziona il suo prezzo.

🧪 Applicazione di esempio

Un cliente ha organizzato la sua lista della spesa usando sottoliste per ogni prodotto. Ogni sottolista contiene:

  1. Nome dell’articolo
  2. Prezzo
  3. Quantità
  4. Tipo

Ecco il codice:

# Item details
bread = ["Bread", 4.80, 3, "Gluten Free"]
milk = ["Milk", 5.99, 2, "2% Milk"]
apple = ["Apple", 1.27, 12, "Fuji"]

# Main list containing all items
grocery_list = [bread, apple, milk]
print("Grocery List:" , grocery_list)

# Accessing item details
print("Item:", grocery_list[2][0])
print("Price:", grocery_list[2][1])
print("Quantity:", grocery_list[2][2])
print("Type:", grocery_list[2][3])

# Adding a new item
onion = ["Onions", 1.30, 10, "Yellow"]
grocery_list.append(onion)

# Removing an item
grocery_list.remove(bread)

# Sorting the list alphabetically
grocery_list.sort()
print("Updated Grocery List:", grocery_list)

🧩 Compito

Aggiornare l’inventario della sezione verdure seguendo questi passaggi:

  1. Creare una lista iniziale:

    vegetables = ["tomatoes", "potatoes", "onions"]
  2. Rimuovere "onions".

  3. Aggiungere "carrots" solo se non è già presente.

  4. Aggiungere "cucumbers" solo se non è già presente.

  5. Ordinare la lista alfabeticamente.

  6. Stampare messaggi specifici se un elemento è già presente.

  7. Stampare la lista finale con: "Updated Vegetable Inventory: "


📝 Requisiti di output

  • Se l’elemento è già presente:

    • "Carrots are already in the list."
    • "Cucumbers are already in the list."
  • Lista finale:

    • Updated Vegetable Inventory: ['carrots', 'cucumbers', 'potatoes', 'tomatoes'] (ordine variabile in base ai dati)