Listeadfærd i Funktioner
Lad os undersøge arbejde med lister inde i funktioner. Selvom det ligner arbejdet med tal, er der nogle vigtige detaljer, du skal være opmærksom på.
Lister er mutable (foranderlige), hvilket betyder, at enhver ændring foretaget på en liste inde i en funktion også vil påvirke den oprindelige liste uden for funktionen, hvis den sendes direkte.
For at undgå dette kan du bruge copy()
-metoden med enhver muterbar datatype. På denne måde opretter du en shallow copy (overfladisk kopi) af listen, så du kan ændre en kopi i stedet for originalen. Dette sikrer, at ændringer foretaget i funktionen ikke påvirker den oprindelige liste.
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']
I dette eksempel forbliver den oprindelige fruits
-liste uændret, fordi copy()
blev brugt. Uden copy()
ville ændringer af listen inde i funktionen også have ændret den oprindelige fruits
-liste.
Swipe to start coding
Opret en funktion, der anvender en 10% rabat på produktpriser over $2.00, uden at ændre den oprindelige liste.
- Definér en funktion
apply_discount(prices)
, der tager en liste af priser. - Lav en kopi af
prices
inde i funktionen og tildel den tilprices_copy
. - Brug en
for
-løkke med indeks-iteration (range(len(prices_copy))
) for at gennemgå den kopierede liste. - Hvis en pris er større end
2.00
, anvendes en 10% rabat. - Returnér den opdaterede
prices_copy
-liste.
Outputkrav
- Funktionen skal returnere den nye liste med rabatterede priser.
- Udskriv resultatet med:
Updated product prices: <$updated_prices>
Bemærk
Brug indeksbaseret iteration for at sikre, at listen ændres korrekt:
for index in range(len(prices)):
ændrer elementerne direkte, i modsætning tilfor price in prices:
.
Løsning
Tak for dine kommentarer!