Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Listeoppførsel i Funksjoner | Funksjoner
Introduksjon til Python

Sveip for å vise menyen

book
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.

1234567891011121314
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']
copy

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.

Oppgave

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 til prices_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 til for price in prices:.

Løsning

Switch to desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 6. Kapittel 4

Spør AI

expand
ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

book
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.

1234567891011121314
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']
copy

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.

Oppgave

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 til prices_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 til for price in prices:.

Løsning

Switch to desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 6. Kapittel 4
Switch to desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Vi beklager at noe gikk galt. Hva skjedde?
some-alt