Lijstgedrag in Functies
Laten we het werken met lijsten binnen functies verkennen. Hoewel dit vergelijkbaar is met werken met getallen, zijn er enkele belangrijke details om op te letten.
Lijsten zijn mutabel, wat betekent dat elke wijziging aan een lijst binnen een functie ook de oorspronkelijke lijst buiten de functie beïnvloedt als deze direct wordt doorgegeven.
Om dit te voorkomen, kun je de copy()
-methode gebruiken bij elk mutabel gegevenstype. Hiermee maak je een oppervlakkige kopie van de lijst, zodat je een duplicaat kunt aanpassen in plaats van het origineel. Dit zorgt ervoor dat wijzigingen binnen de functie geen invloed hebben op de oorspronkelijke 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 oorspronkelijke fruits
-lijst ongewijzigd omdat copy()
is gebruikt. Zonder copy()
zou het aanpassen van de lijst binnen de functie ook de oorspronkelijke fruits
-lijst hebben gewijzigd.
Swipe to start coding
Maak een functie om een 10% korting toe te passen op productprijzen boven de $2,00, zonder de originele lijst te wijzigen.
- Definieer een functie
apply_discount(prices)
die een lijst met prijzen ontvangt. - 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 lopen. - Als een prijs groter is dan
2.00
, pas dan een korting van 10% toe. - Retourneer de bijgewerkte lijst
prices_copy
.
Uitvoervereisten
- De functie moet de nieuwe lijst met aangepaste prijzen retourneren.
- Print het resultaat met:
Bijgewerkte productprijzen: <$updated_prices>
Opmerking
Gebruik index-gebaseerde iteratie om ervoor te zorgen dat de lijst correct wordt aangepast:
for index in range(len(prices)):
past elementen direct aan, in tegenstelling totfor price in prices:
.
Oplossing
Bedankt voor je feedback!