Listbeteende i Funktioner
Låt oss utforska att arbeta med listor inuti funktioner. Även om det liknar att arbeta med siffror, finns det några viktiga detaljer att vara medveten om.
Listor är muterbara, vilket betyder att alla ändringar som görs på en lista inuti en funktion också kommer att påverka den ursprungliga listan utanför funktionen om den skickas direkt.
För att förhindra detta kan du använda metoden copy()
med vilken muterbar datatyp som helst. Genom att göra det skapar du en ytlig kopia av listan, vilket gör att du kan modifiera en kopia istället för originalet. Detta säkerställer att ändringar som görs inom funktionen inte påverkar den ursprungliga listan.
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 det här exemplet förblir den ursprungliga fruits
-listan oförändrad eftersom copy()
användes. Utan copy()
skulle modifiering av listan inuti funktionen också ha ändrat den ursprungliga fruits
-listan.
Swipe to start coding
Skapa en funktion för att tillämpa en 10% rabatt på produktpriser över $2.00, utan att ändra den ursprungliga listan.
- Definiera en funktion
apply_discount(prices)
som tar en lista av priser. - Inuti funktionen, gör en kopia av
prices
och tilldela den tillprices_copy
. - Använd en
for
-loop med indexiteration (range(len(prices_copy))
) för att gå igenom den kopierade listan. - Om ett pris är större än
2.00
, tillämpa en 10% rabatt. - Returnera den uppdaterade
prices_copy
-listan.
Utdata krav
- Funktionen ska returnera den nya listan med rabatterade priser.
- Skriv ut resultatet med:
Uppdaterade produktpriser: <$updated_prices>
Notera
Använd indexbaserad iteration för att säkerställa att listan modifieras korrekt:
for index in range(len(prices)):
modifierar element direkt, till skillnad frånfor price in prices:
.
Lösning
Tack för dina kommentarer!