Listojen Käyttäytyminen Funktioissa
Tutustutaan listojen käsittelyyn funktioiden sisällä. Vaikka se muistuttaa numeroiden käsittelyä, on muutama tärkeä yksityiskohta huomioitava.
Listat ovat muokattavia (mutable), mikä tarkoittaa, että kaikki muutokset, jotka tehdään listalle funktion sisällä, vaikuttavat myös alkuperäiseen listaan funktion ulkopuolella, jos lista välitetään suoraan.
Tämän estämiseksi voit käyttää copy()
-metodia minkä tahansa muokattavan tietotyypin kanssa. Näin luot pintakopion listasta, jolloin voit muokata kopiota alkuperäisen sijaan. Tämä varmistaa, että funktion sisällä tehdyt muutokset eivät vaikuta alkuperäiseen listaan.
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']
Tässä esimerkissä alkuperäinen fruits
-lista pysyy muuttumattomana, koska käytettiin copy()
-metodia. Ilman copy()
-metodia listan muokkaaminen funktion sisällä olisi muuttanut myös alkuperäistä fruits
-listaa.
Swipe to start coding
Luo funktio, joka soveltaa 10 %:n alennuksen tuotteiden hintoihin, jotka ylittävät 2,00 $, muuttamatta alkuperäistä listaa.
- Määrittele funktio
apply_discount(prices)
, joka ottaa hinnat listana. - Tee funktion sisällä kopio listasta
prices
ja tallenna se muuttujaanprices_copy
. - Käytä
for
-silmukkaa ja indeksoitua iteraatiota (range(len(prices_copy))
) käydäksesi kopioitua listaa läpi. - Jos hinta on suurempi kuin
2.00
, sovella 10 %:n alennusta. - Palauta päivitetty
prices_copy
-lista.
Tulostusvaatimukset
- Funktion tulee palauttaa uusi lista alennetuilla hinnoilla.
- Tulosta tulos seuraavasti:
Updated product prices: <$updated_prices>
Huom
Käytä indeksoitua iteraatiota varmistaaksesi, että lista päivittyy oikein:
for index in range(len(prices)):
muokkaa alkioita suoraan, toisin kuinfor price in prices:
.
Ratkaisu
Kiitos palautteestasi!