Listeoppførsel i Funksjoner
La oss utforske arbeid med lister inne i funksjoner. Selv om det ligner på å jobbe med tall, finnes det noen viktige detaljer å være oppmerksom på.
Lister er mutable (endrebare), noe som betyr at endringer gjort på en liste inne i en funksjon også vil påvirke den opprinnelige listen utenfor funksjonen hvis den sendes direkte.
For å unngå dette kan du bruke copy()
-metoden med alle mutable datatyper. Da lager du en shallow copy (overflatisk kopi) av listen, slik at du kan endre en duplikat i stedet for originalen. Dette sikrer at endringer gjort i funksjonen ikke påvirker den opprinnelige listen.
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 eksempelet forblir den opprinnelige listen fruits
uendret fordi copy()
ble brukt. Uten copy()
ville endringer i listen inne i funksjonen også ha endret den opprinnelige listen fruits
.
Swipe to start coding
Lag en funksjon som gir 10 % rabatt på produktpriser over $2.00, uten å endre den opprinnelige listen.
- Definer en funksjon
apply_discount(prices)
som tar en liste med priser. - Lag en kopi av
prices
inne i funksjonen og tildel den tilprices_copy
. - Bruk en
for
-løkke med indeksiterasjon (range(len(prices_copy))
) for å gå gjennom den kopierte listen. - Hvis en pris er større enn
2.00
, gi 10 % rabatt. - Returner den oppdaterte listen
prices_copy
.
Krav til utdata
- Funksjonen skal returnere den nye listen med rabatterte priser.
- Skriv ut resultatet slik:
Oppdaterte produktpriser: <$updated_prices>
Merk
Bruk indeksbasert iterasjon for å sikre at listen endres riktig:
for index in range(len(prices)):
endrer elementene direkte, i motsetning tilfor price in prices:
.
Løsning
Takk for tilbakemeldingene dine!