Lijstgedrag in Functions
Laten we werken met lijsten binnen functies verkennen. Hoewel het vergelijkbaar is met werken met getallen, zijn er een paar belangrijke details om op te letten.
Lijsten zijn muteerbaar, wat betekent dat alle wijzigingen die aan een lijst binnen een functie worden aangebracht, ook de originele lijst buiten de functie beïnvloeden als deze direct wordt doorgegeven.
Om dit te voorkomen, kun je de methode copy()
gebruiken met elk muteerbaar gegevenstype. Door dit te doen, maak je een oppervlakkige kopie van de lijst, waardoor je een duplicaat kunt wijzigen in plaats van het origineel. Dit zorgt ervoor dat wijzigingen binnen de functie geen invloed hebben op de originele lijst.
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 dit voorbeeld blijft de originele fruits
lijst ongewijzigd omdat copy()
werd gebruikt. Zonder copy()
zou het wijzigen van de lijst binnen de functie ook de originele fruits
lijst hebben veranderd.
Swipe to start coding
Maak een functie om een 10% korting toe te passen op productprijzen boven $2.00, zonder de originele lijst te wijzigen.
- Definieer een functie
apply_discount(prices)
die een lijst van prijzen neemt. - Maak binnen de functie een kopie van
prices
en wijs deze toe aanprices_copy
. - Gebruik een
for
-lus met index-iteratie (range(len(prices_copy))
) om door de gekopieerde lijst te gaan. - Als een prijs groter is dan
2.00
, pas dan een 10% korting toe. - Retourneer de bijgewerkte
prices_copy
lijst.
Uitvoervereisten
- De functie moet de nieuwe lijst met verlaagde prijzen retourneren.
- Print het resultaat met:
Bijgewerkte productprijzen: <$updated_prices>
Opmerking
Gebruik index-gebaseerde iteratie om ervoor te zorgen dat de lijst correct wordt gewijzigd:
for index in range(len(prices)):
wijzigt elementen direct, in tegenstelling totfor price in prices:
.
Oplossing
Bedankt voor je feedback!