📘 Comportamento delle Liste nelle Funzioni

Quando si lavora con le liste all’interno delle funzioni, è importante ricordare che le liste sono mutabili. Questo significa che:

👉 Se passi una lista a una funzione e la modifichi, la lista originale verrà modificata. 👉 Per evitare modifiche indesiderate, devi creare una copia della lista usando .copy().


🔹 Liste Mutabili: Effetto Collaterale

Se una lista viene passata direttamente a una funzione e modificata, le modifiche saranno visibili anche fuori dalla funzione.

Per evitare questo comportamento si utilizza:

list_copy = original_list.copy()

In questo modo lavoriamo su un duplicato, lasciando intatta la lista originale.


🔹 Esempio

def add_strawberry(original_list):
    list_copy = original_list.copy()  # Copy of the original list
    list_copy.append("Strawberry")    # Modify the copied list
    return list_copy

# Original list
fruits = ["Apple", "Banana", "Cherry"]

# Call the function
new_fruits = add_strawberry(fruits)

# Check the results
print("Original list:", fruits)          # ['Apple', 'Banana', 'Cherry']
print("Modified list:", new_fruits)      # ['Apple', 'Banana', 'Cherry', 'Strawberry']

➡️ La lista originale rimane invariata grazie all’uso di .copy().


📝 Compito

Creare una funzione per applicare uno sconto del 10% ai prezzi superiori a $2.00, senza modificare la lista originale.

Istruzioni

  1. Definire apply_discount(prices)
  2. Creare una copia con prices_copy = prices.copy()
  3. Iterare tramite indice usando for index in range(len(prices_copy))
  4. Se il prezzo è > 2.00 → applicare sconto del 10%
  5. Restituire la lista aggiornata
  6. Stampare: Updated product prices: <lista>

Soluzione

def apply_discount(prices):
    # Create a copy of the original list
    prices_copy = prices.copy()

    # Iterate using index
    for index in range(len(prices_copy)):
        if prices_copy[index] > 2.00:
            prices_copy[index] = prices_copy[index] * 0.90  # Apply 10% discount

    return prices_copy


# Original list of prices
product_prices = [1.50, 2.20, 3.00, 0.99, 2.75]

# Call the function
updated_prices = apply_discount(product_prices)

# Output
print(f"Updated product prices: {updated_prices}")