Comportamento delle Liste nelle Funzioni
Esploriamo lavorare con le liste all'interno delle funzioni. Sebbene sia simile a lavorare con i numeri, ci sono alcuni dettagli importanti di cui essere consapevoli.
Le liste sono mutabili, il che significa che qualsiasi modifica apportata a una lista all'interno di una funzione influenzerà anche la lista originale al di fuori della funzione se passata direttamente.
Per evitare ciò, puoi utilizzare il metodo copy()
con qualsiasi tipo di dato mutabile. In questo modo, crei una copia superficiale della lista, permettendoti di modificare un duplicato invece dell'originale. Questo assicura che le modifiche apportate all'interno della funzione non influenzino la lista originale.
def add_strawberry(original_list): list_copy = original_list.copy() # Create a 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']
In questo esempio, la lista originale fruits
rimane invariata perché è stato utilizzato copy()
. Senza copy()
, modificare la lista all'interno della funzione avrebbe cambiato anche la lista originale fruits
.
Swipe to start coding
Crea una funzione per applicare uno sconto del 10% ai prezzi dei prodotti superiori a $2.00, senza modificare la lista originale.
- Definisci una funzione
apply_discount(prices)
che prende una lista di prezzi. - All'interno della funzione, fai una copia di
prices
e assegnala aprices_copy
. - Usa un ciclo
for
con iterazione tramite indice (range(len(prices_copy))
) per scorrere la lista copiata. - Se un prezzo è maggiore di
2.00
, applica uno sconto del 10%. - Restituisci la lista
prices_copy
aggiornata.
Requisiti di Output
- La funzione dovrebbe restituire la nuova lista con i prezzi scontati.
- Stampa il risultato usando:
Updated product prices: <$updated_prices>
Nota
Usa l'iterazione basata su indice per assicurarti che la lista venga modificata correttamente:
for index in range(len(prices)):
modifica gli elementi direttamente, a differenza difor price in prices:
.
Soluzione
Grazie per i tuoi commenti!