logo

Funkcia Python filter().

Vstavaná funkcia filter() v Pythone je tiež výkonná; na vykonávanie procedúry filtrovania údajov v sekvenciách, ako sú zoznamy, n-tice a reťazce. Funkcia filter() sa používa na aplikovanie funkcie na každý prvok iterovateľného prvku (ako je zoznam alebo n-tica) a vrátenie iného iterovateľného prvku obsahujúceho len prvky, pre ktoré funkcia vráti hodnotu True. V tomto smere nám filter() umožňuje odfiltrovať prvky zo zoskupenia na základe nejakej podmienky. Prvý argument môže byť None, ak funkcia nie je dostupná a vracia iba prvky, ktoré majú hodnotu True.

Syntax:

 filter (function, iterable) 

Parametre

funkcia: Je to funkcia. Ak je nastavené na Žiadne, vrátia sa iba prvky, ktoré majú hodnotu True.

Iterovateľné: Akákoľvek iterovateľná sekvencia, napríklad zoznam, n-tica a reťazec.

Oba parametre sú povinné.

Návrat

Vráti to isté, čo vrátila funkcia.

Pozrime sa na niekoľko príkladov funkcie filter(), aby sme pochopili jej funkčnosť.

Príklad funkcie Python filter() 1

Tento jednoduchý príklad vráti hodnoty vyššie ako 5 pomocou funkcie filtra. Pozrite si príklad nižšie.

kód

 # Python filter() function example def filterdata(x): if x>5: return x # Calling function result = filter(filterdata,(1,2,6)) # Displaying result print(list(result)) 

Výkon:

[6] 

Kód definuje funkciu s názvom filterdata, ktorá má jeden argument x. V tejto funkcii skontrolujeme za predpokladu, že x je väčšie ako 5, a za predpokladu, že je to pravda, vypíšeme x. Potom zavoláme funkciu filter() a zadáme filterdata ako hlavný argument a n-ticu (1, 2, 6) ako nasledujúci argument. Funkcia filter() aplikuje funkciu filterdata() na každý prvok n-tice a vráti iterátor, ktorý obsahuje len prvky, ktoré spĺňajú podmienku x > 5. Nakoniec iterátor skonvertujeme na zoznam pomocou funkcie list() a vytlačte výsledok.

Nasleduje niekoľko ďalších príkladov, ako používať metódu filter() v Pythone:

Príklad 2:

Odfiltrujte prázdne reťazce zo zoznamu:

kód

 # Python filter() function example strings = [ '', 'hello', '', 'world', '' ] # Using filter() to remove empty strings from the list result = list(filter(lambda x: x != '', strings)) # Printing the result print(result) 

Výkon:

zreťazenie java reťazec
 [ 'hello', 'world' ] 

V tomto príklade funkcia lambda kontroluje, či každý reťazec nie je prázdny, testovaním za predpokladu, že je ekvivalentný prázdnemu reťazcu (''). Funkcia filter() vráti ďalšiu iterovateľnú položku obsahujúcu len neprázdne reťazce.

Príklad 3:

Odfiltrujte záporné čísla zo zoznamu:

kód

 # Python filter() function example numbers = [ 1, -2, 3, -4, 5, -6 ] # Using filter() to remove negative numbers from the list result = list(filter(lambda x: x >= 0, numbers)) # Printing the result print(result) 

Výkon:

 [1, 3, 5] 

V tomto príklade funkcia lambda skontroluje za predpokladu, že každé číslo je nezáporné testovaním v prípade, že je výraznejšie alebo ekvivalentné nule (0). Funkcia filter() vráti ďalšiu iterovateľnú položku obsahujúcu iba nezáporné čísla.

Príklad 4:

Odfiltrujte duplikáty zo zoznamu:

kód

 # Python filter() function example numbers = [ 1, 2, 3, 2, 4, 3, 5 ] # Using filter() to remove duplicate numbers from the list result = list(filter(lambda x: numbers.count(x) == 1, numbers)) # Printing the result print(result) 

Výkon:

 [ 1, 4, 5 ] 

V tomto príklade funkcia lambda skontroluje, či sa každé číslo v zozname čísel zobrazí iba raz, a to tak, že spočíta, ako často sa zobrazí (numbers.count(x)) a otestuje, či je počet ekvivalentný 1. Funkcia filter() vráti ďalšiu iterovateľnú položku obsahujúcu iba jedinečné čísla.

Poznámka: Je dôležité, že v Pythone 3 funkcia filter() vracia iterovateľné, čo znamená, že ju naozaj chcete úplne zmeniť na zoznam (ako je zobrazené v príkladoch vyššie), aby ste ju zahrnuli ako zoznam. V Pythone 2 však funkcia filter() samozrejme vracia zoznam.

Záver:

Nakoniec, funkcia filter() je výkonný nástroj na manipuláciu s údajmi v Pythone. Filtrovaním iterovateľnej položky na základe vopred definovanej podmienky môžete rýchlo a efektívne oddeliť údaje, ktoré skutočne chcete. Podobne môžete použiť filter() v kombinácii s inými funkciami Pythonu na vykonávanie zložitejších manipulácií s údajmi.