filter() în Python

Funcții încorporate Python 3.0+

Păstrează doar elementele pentru care o funcție returnează o valoare adevărată.

Sintaxă
filter(functie, iterabil)

Ce face filter()

filter(f, colectie) produce elementele x pentru care f(x) este adevărat. Dacă dai None în loc de funcție, păstrează elementele adevărate (elimină 0, "", None, listele goale).

Rezultatul este un iterator. Echivalentul cu list comprehension este [x for x in colectie if f(x)]. Pentru opusul (elementele false) există itertools.filterfalse().

Parametri

Parametru Descriere
functie Funcția de test, sau None.
iterabil Colecția filtrată.

Ce returnează

Un iterator filter.

Exemple

Exemplul 1: Filtrare cu o funcție

def e_par(n):
    return n % 2 == 0

print(list(filter(e_par, range(10))))
print(list(filter(str.isdigit, ["12", "abc", "7", "3a"])))

Rezultat

[0, 2, 4, 6, 8]
['12', '7']

Exemplul 2: Eliminarea valorilor goale

campuri = ["Ana", "", "Iași", None, "0722 111 222", ""]
print(list(filter(None, campuri)))

Rezultat

['Ana', 'Iași', '0722 111 222']

Greșeli frecvente

  • Uiți că filter(None, ...) elimină și numărul 0. Dacă 0 este o valoare validă, filtrează explicit: x is not None.

Comenzi înrudite

  • map(): Aplică o funcție fiecărui element dintr-o colecție.
  • List comprehension: Construiește o listă nouă dintr-o altă colecție, într-un singur rând.
  • itertools.filterfalse() și compress(): filterfalse păstrează elementele pentru care condiția este falsă; compress filtrează după o listă de valori adevărat/fals.
  • all() și any(): all() verifică dacă toate elementele sunt adevărate; any() verifică dacă cel puțin unul este.