Listeoppførsel i Funksjoner
La oss utforske arbeid med lister inne i funksjoner. Selv om det ligner på å jobbe med tall, er det noen viktige detaljer å være oppmerksom på.
Lister er muterbare, noe som betyr at eventuelle endringer gjort på en liste inne i en funksjon også vil påvirke den opprinnelige listen utenfor funksjonen hvis den sendes direkte.
For å forhindre dette, kan du bruke copy()
-metoden med alle muterbare datatyper. Ved å gjøre dette, oppretter du en grunn kopi av listen, slik at du kan endre en duplikat i stedet for originalen. Dette sikrer at endringer gjort innen 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 fruits
-listen uendret fordi copy()
ble brukt. Uten copy()
, ville endring av listen inne i funksjonen også ha endret den opprinnelige fruits
-listen.
Swipe to start coding
Lag en funksjon for å anvende en 10% rabatt på produktpriser over $2.00, uten å endre den opprinnelige listen.
- Definer en funksjon
apply_discount(prices)
som tar en liste med priser. - Inne i funksjonen, lag en kopi av
prices
og tilordne 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
, anvend en 10% rabatt. - Returner den oppdaterte
prices_copy
-listen.
Utdata Krav
- Funksjonen skal returnere den nye listen med rabatterte priser.
- Skriv ut resultatet ved å bruke:
Oppdaterte produktpriser: <$updated_prices>
Merk
Bruk indeksbasert iterasjon for å sikre at listen blir modifisert riktig:
for index in range(len(prices)):
modifiserer elementer direkte, i motsetning tilfor price in prices:
.
Løsning
Takk for tilbakemeldingene dine!