Python-suodatin ()

Filter () -menetelmä rakentaa iteraattorin iterable-elementeistä, joille funktio palauttaa true.

Yksinkertaisesti sanoen, filter()menetelmä suodattaa annetun iterable-toiminnon funktion avulla, joka testaa iterable-elementin jokaisen elementin olevan totta tai ei.

Menetelmän syntaksi filter()on:

 suodatin (toiminto, iteroitava)

filter () Parametrit

filter() menetelmä ottaa kaksi parametria:

  • function - funktio, joka testaa, palautuvatko iteroitavan elementit tosi vai epätosi
    Jos ei ole, funktion oletusarvo on Identity-funktio - joka palauttaa epätosi, jos jokin elementti on väärä
  • iterable - iterable, joka on suodatettava, voi olla minkä tahansa iteraattorin joukko, luettelo, joukko tai säiliö

Palautusarvo suodattimelta ()

filter() method palauttaa iteraattorin, joka läpäisi jokaisen iteroitavan elementin toimintotarkistuksen.

filter() menetelmä vastaa:

 # kun funktio on määritelty (elementti elementille iteroitavissa, jos funktio (elementti)) # kun funktio on Ei mitään (elementti elementille iteroitavissa, jos elementti)

Esimerkki 1: Kuinka filter () toimii iteroitavassa luettelossa?

 # list of letters letters = ('a', 'b', 'd', 'e', 'i', 'j', 'o') # function that filters vowels def filterVowels(letter): vowels = ('a', 'e', 'i', 'o', 'u') if(letter in vowels): return True else: return False filteredVowels = filter(filterVowels, letters) print('The filtered vowels are:') for vowel in filteredVowels: print(vowel)

Tuotos

 Suodatetut vokaalit ovat: aeio 

Täällä meillä on luettelo kirjaimista ja meidän on suodatettava vain siinä olevat vokaalit.

Voisimme käyttää for for -silmukkaa silmukkaamaan jokaisen kirjainluettelon osan ja tallentamaan sen toiseen luetteloon, mutta Pythonissa tämä prosessi on helpompaa ja nopeampaa filter()menetelmän avulla.

Meillä on toiminto, filterVowelsjoka tarkistaa, onko kirjain vokaali vai ei. Tämä toiminto siirretään filter()menetelmään, jossa on kirjainluettelo.

filter()method välittää sitten jokaisen kirjaimen filterVowels()metodille tarkistaakseen, palautuiko se tosi vai ei. Loppujen lopuksi se luo iteraattorin niistä, jotka palaavat tosi (vokaalit).

Koska iteraattori ei tallenna arvoja itse, käymme sen läpi ja tulostamme vokaalit yksitellen.

Esimerkki 2: Kuinka filter () -menetelmä toimii ilman suodatintoimintoa?

 # random list randomList = (1, 'a', 0, False, True, '0') filteredList = filter(None, randomList) print('The filtered elements are:') for element in filteredList: print(element)

Tuotos

 Suodatetut elementit ovat: 1 a Tosi 0 

Tässä meillä on satunnainen luettelo numeroista, merkkijonosta ja loogisesta arvosta randomList-luettelossa.

Välitämme randomList- filter()menetelmän ensimmäisen parametrin (suodatintoiminto) arvoksi Ei mitään.

Kun suodatintoiminto on Ei mitään, funktion oletusarvo on Identity-funktio ja kukin randomList-elementti tarkistetaan, onko se totta vai ei.

Kun käymme läpi viimeisen suodatetun luettelon, saamme tosi elementit: 1, a, True and '0'("0" merkkijonona on myös totta).

Mielenkiintoisia artikkeleita...