Listbeteende i Funktioner
Låt oss utforska arbete med listor inuti funktioner. Även om det liknar arbete med tal finns det några viktiga detaljer att tänka på.
Listor är muterbara, vilket innebär att alla ändringar som görs på en lista inuti en funktion också påverkar den ursprungliga listan utanför funktionen om den skickas direkt.
För att förhindra detta kan du använda metoden copy()
med alla muterbara datatyper. På så sätt skapar du en ytlig kopia av listan, vilket gör att du kan ändra en dubblett 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 listan fruits
oförändrad eftersom copy()
användes. Utan copy()
skulle en ändring av listan inuti funktionen även ha ändrat den ursprungliga listan fruits
.
Swipe to start coding
Skapa en funktion som tillämpar 10 % rabatt på produktpriser över 2,00 $, utan att ändra den ursprungliga listan.
- Definiera en funktion
apply_discount(prices)
som tar en lista med priser. - Gör en kopia av
prices
inuti funktionen och tilldela den tillprices_copy
. - Använd en
for
-loop med indexbaserad iteration (range(len(prices_copy))
) för att gå igenom den kopierade listan. - Om ett pris är större än
2.00
, tillämpa 10 % rabatt. - Returnera den uppdaterade listan
prices_copy
.
Utmatningskrav
- Funktionen ska returnera den nya listan med rabatterade priser.
- Skriv ut resultatet med:
Uppdaterade produktpriser: <$updated_prices>
Obs
Använd indexbaserad iteration för att säkerställa att listan modifieras korrekt:
for index in range(len(prices)):
ändrar elementen direkt, till skillnad frånfor price in prices:
.
Lösning
Tack för dina kommentarer!