📋 PROMEMORIA: LISTE E METODI DELLE LISTE IN PYTHON
# 📌 CARATTERISTICHE FONDAMENTALI DELLE LISTE
#
# # Le liste in Python hanno 5 proprietà chiave:
# 1. ORDINATE → mantengono sempre la posizione degli elementi
# 2. MUTABILI → possono essere modificate dopo la creazione
# 3. VERSATILI → accettano qualsiasi tipo di dato
# 4. INDICIZZATE → ogni elemento ha una posizione numerica (0, 1, 2...)
# 5. AMMETTONO DUPLICATI → lo stesso valore può apparire più volte
# ─────────────────────────────────────────────────────────────────────────────
# 📥 CREAZIONE DELLE LISTE
# ─────────────────────────────────────────────────────────────────────────────
# Metodo 1: Con parentesi quadre []
grocery_items = ["milk", "eggs", "cheese", "butter"]
# Metodo 2: Convertendo altri iterabili con list()
caratteri = list("abc") # → ["a", "b", "c"]
# Liste con tipi misti (possibile ma da usare con cautela)
apple_details = ["apple", 34, True, 1.99, "Fuji"]
# Liste vuote
empty_list = []
# ─────────────────────────────────────────────────────────────────────────────
# 🛠️ METODI PRINCIPALI DELLE LISTE
# ─────────────────────────────────────────────────────────────────────────────
# 1. .append(x) → Aggiunge un elemento ALLA FINE della lista
inventory = ["carrots", "bananas", "apples"]
inventory.append("oranges")
# Risultato: ["carrots", "bananas", "apples", "oranges"]
# 2. .remove(x) → Rimuove la PRIMA OCCORRENZA dell'elemento x
inventory.remove("bananas")
# Risultato: ["carrots", "apples", "oranges"]
# 3. .sort() → Ordina la lista in ordine CRESCENTE (modifica la lista originale)
inventory.sort()
# Risultato: ["apples", "carrots", "oranges"]
# ─────────────────────────────────────────────────────────────────────────────
# 🧪 ESEMPIO COMPLETO: GESTIONE INVENTARIO NEGOZIO
# ─────────────────────────────────────────────────────────────────────────────
# Scenario: Gestire il magazzino di un negozio di alimentari
inventory = ["carrots", "bananas", "apples"]
# Passo 1: Arriva nuovo stock
inventory.append("oranges")
print(f"Dopo aggiunta: {inventory}")
# Output: ["carrots", "bananas", "apples", "oranges"]
# Passo 2: Prodotto esaurito o scaduto
inventory.remove("bananas")
print(f"Dopo rimozione: {inventory}")
# Output: ["carrots", "apples", "oranges"]
# Passo 3: Organizzare alfabeticamente
inventory.sort()
print(f"Inventario ordinato: {inventory}")
# Output: ["apples", "carrots", "oranges"]
# ─────────────────────────────────────────────────────────────────────────────
# 💡 NOTE IMPORTANTI
# ─────────────────────────────────────────────────────────────────────────────
# • I metodi si usano con la DOT NOTATION: lista.metodo()
# • .append() e .remove() modificano la lista SENZA restituire un valore
# • .sort() ordina la lista ORIGINALE (non crea una nuova lista)
# • Per ordinare senza modificare l'originale, usa: sorted(lista)
# • .remove() genera errore se l'elemento non esiste nella lista
# ─────────────────────────────────────────────────────────────────────────────
# ✅ ESERCIZI DI VERIFICA
# ─────────────────────────────────────────────────────────────────────────────
# Esercizio 1: Predire l'output
fruits = ["apple", "banana", "cherry"]
fruits.append("orange")
print(fruits)
# Soluzione: ["apple", "banana", "cherry", "orange"]
# Esercizio 2: Rimuovere un elemento
items = ["bread", "milk", "eggs", "yogurt"]
items.remove("milk")
print(items)
# Soluzione: ["bread", "eggs", "yogurt"]
# ═══════════════════════════════════════════════════════════════════════════
# Fine del promemoria
# ═══════════════════════════════════════════════════════════════════════════