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.