Listan Käyttäytyminen Funktioissa
Tutkitaan listojen käsittelyä funktioiden sisällä. Vaikka se onkin samanlaista kuin numeroiden kanssa työskentely, on muutamia tärkeitä yksityiskohtia, jotka on hyvä tietää.
Listat ovat muokattavissa, mikä tarkoittaa, että kaikki muutokset, jotka tehdään listalle funktion sisällä, vaikuttavat myös alkuperäiseen listaan funktion ulkopuolella, jos se välitetään suoraan.
Tämän estämiseksi voit käyttää copy()
-metodia minkä tahansa muokattavan tietotyypin kanssa. Näin luot listasta pintakopion, jolloin voit muokata kopiota alkuperäisen sijaan. Tämä varmistaa, että funktiossa 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()
. Ilman copy()
, listan muokkaaminen funktion sisällä olisi muuttanut myös alkuperäistä fruits
-listaa.
Swipe to start coding
Luo funktio, joka soveltaa 10% alennuksen tuotteiden hintoihin, jotka ovat yli $2.00, muuttamatta alkuperäistä listaa.
- Määrittele funktio
apply_discount(prices)
, joka ottaa hinnat listana. - Funktion sisällä tee kopio
prices
-listasta ja tallenna seprices_copy
-muuttujaan. - Käytä
for
-silmukkaa indeksin iteroinnilla (range(len(prices_copy))
) käydäksesi läpi kopioitua listaa. - Jos hinta on suurempi kuin
2.00
, sovella 10% alennus. - Palauta päivitetty
prices_copy
-lista.
Tulostusvaatimukset
- Funktion tulee palauttaa uusi lista alennetuilla hinnoilla.
- Tulosta tulos käyttäen:
Updated product prices: <$updated_prices>
Huom
Käytä indeksiin perustuvaa iterointia varmistaaksesi, että lista muokataan oikein:
for index in range(len(prices)):
muokkaa elementtejä suoraan, toisin kuinfor price in prices:
.
Ratkaisu
Kiitos palautteestasi!