Edistynyt Python-kehityskurssi
Luku
>
Taso
Edistyneet listat
Kartat, Suodatus, Redukointi
Tavoite
Saat jäätelönvalmistuksen valmiiksi käyttämällä Map-, Filter- ja Reduce-toimintoja.
Jotkut jäätelömakuista ovat vähäisiä tai tyhjiä, mutta meillä on tarpeeksi materiaaleja kompensoida ja koota lisää jäätelöä. Tätä varten sinun täytyy käyttää Map-toimintoa, joka on tehokas työkalu ja mahdollistaa kirjoitettavan koodin määrän minimoinnin tiivistämällä silmukat ja haarautuvat rakenteet. Filter- ja Reduce-funktiot täydentävät Map-toimintoa ja tarjoavat kaipaamaasi monipuolisuutta koodaukseen.
Aluksi sinun täytyy tuoda Reduce functools-kirjastosta, jotta voit käyttää sitä lisäämällä tämän koodin ohjelman alkuun: from functools import reduce. Map- ja Filter-funktiot ovat Pythonin sisäänrakennettuja, eikä niitä tarvitse erikseen tuoda.
Ensiksi sinun täytyy ottaa joitakin ainesosia kävelykylmästä, kävellä kultaista X-merkkiä kohti, kääntyä oven puoleen ja avata se käyttämällä open()-funktiota. Ota kaikki pakkaukset, joissa lukee "cream", kylmäkaapista ja kävele sitten valoisan X-merkin luo vihreän maton päällä.
Kentällä on kolme (3) listakonstanssia nimeltään: vanilla, strawberry ja chocolate. Jokainen konstanssi sisältää ainesosayhdistelmän, joka muodostaa jäätelömaun. Vihreällä X-merkillä tarkista strawberry-listakonstanssin sisältö. Käytä ensin place()-funktiota tallettamaan aiemmin ottamasi "cream" ja käytä speak()-funktiota varmistaaksesi strawberry-listakonstanssin sisältö.
Kun sisältö on tarkistettu, on aika käyttää Map-toimintoa strawberry-listakonstanssin kanssa, sillä listan alkiot ovat desimaaleja. map()-funktion avulla voit pyöristää kaikki listan alkiot, jolloin sinun ei tarvitse iteroida jokaista alkiota silmukassa yksitellen pyöristääksesi niitä. Tämän tekemiseksi, luo lista nimeltä map1 ja käytä map()-funktiota yhdessä strawberry-listan ja round()-funktion kanssa, esimerkiksi näin: map1 = list(map(round, strawberry)). Kun olet valmis, käytä speak()-funktiota map1:n kanssa varmistaaksesi tuloksen.
Kun tämä on tehty, siirrytään Filter-osioon, joka toimii samalla tavalla kuin Map, mutta sen sijaan se vaatii käytettäväksi funktion. Editorin yläosassa sinulla on ennalta määritelty funktio nimeltä main_ingredients, jota käytetään määrittämään, onko luku suurempi kuin 25.
def main_ingredients(value):
return value > 25
Sen sijaan, että kulkisit silmukkaa, voit käyttää tätä funktiota yhdessä filter()-funktion kanssa kootaaksesi uuden listan, johon sisältyvät ne alkiot, jotka ovat yli 25 – eli pääainesosat. Luo uusi lista nimeltä filter1 ja käytä filter()-funktiota yhdessä main_ingredients-funktion ja map1:n kanssa määrittääksesi kaikki pääainesosat, jotka löytyvät luomastasi Map-listasta, esimerkiksi näin: filter1 = list(filter(main_ingredients, value)). Kun olet valmis, käytä speak()-funktiota filter1:n kanssa varmistaaksesi tuloksen.
Nyt siirrytään Reduce-osioon, joka toimii samalla tavalla kuin Filter, mutta sitä käytetään listan kutistamiseen yhdeksi kokonaisuudeksi. Aivan kuten Filter, se käyttää mukautettua funktiota, tällä kertaa nimeltä custom_sum, joka dynaamisesti summaa kaksi lukua yhteen.
def custom_sum(first, second):
return first + second
Luo muuttuja nimeltä reduce1 ja käytä reduce()-funktiota yhdessä custom_sum-funktion ja filter1:n kanssa kokoamaan kaikki alkiot yhdeksi kokonaisuudeksi, esimerkiksi näin: reduce1 = reduce(custom_sum, filter1). Kun olet valmis, käytä speak()-funktiota reduce1:n kanssa varmistaaksesi tuloksen.
Nyt kun olet suorittanut Map, Filter, Reduce -syklin, toista sama sykli valoisilla X-merkeillä punaisella ja sinisellä matolla. Punaisella matolla käytä vanilla-listakonstanssia ja luo map2, filter2 ja reduce2. Sinisellä matolla käytä chocolate-listakonstanssia ja luo map3, filter3 ja reduce3.
Kävele viimeiselle valoisalle X-merkille, joka sijaitsee violetin maton päällä, ja yhdistä reduce1, reduce2 ja reduce3 muodostaaksesi pääainesosat vaniljan, mansikan ja suklaan makuja varten. Luo muuttuja nimeltä neapolitan ja lisää kaikki Reduce-tulokset, esimerkiksi näin: neapolitan = reduce1+reduce2+reduce3. Käytä speak()-funktiota tarkistaaksesi yhdistelmän ja place()-funktiota sen kanssa muodostaaksesi neapolitan-jäätelön ja suorittaaksesi tason.