Ce face itertools.filterfalse() și compress()
filterfalse(f, colectie) este opusul lui filter(): produce elementele pentru care f(x) este fals. Cu None ca funcție, produce elementele false.
compress(date, selectori) păstrează elementele din date pentru care elementul de pe aceeași poziție din selectori este adevărat. Este util când ai deja o „mască” de valori logice.
Parametri
| Parametru | Descriere |
|---|---|
functie, iterabil |
Pentru filterfalse: testul și elementele. |
date, selectori |
Pentru compress: elementele și valorile logice corespunzătoare. |
Ce returnează
Un iterator.
Exemple
Exemplul 1: Respinși și selecție după mască
from itertools import filterfalse, compress
note = [9, 4, 7, 3, 10]
print(list(filterfalse(lambda n: n >= 5, note)))
nume = ["Ana", "Dan", "Ioana", "Mihai"]
prezenti = [True, False, True, True]
print(list(compress(nume, prezenti)))
print(list(filterfalse(None, [0, 1, "", "a", None])))
Rezultat
[4, 3]
['Ana', 'Ioana', 'Mihai']
[0, '', None]
Greșeli frecvente
- Dai selectori mai puțini decât datele la
compress: elementele în plus sunt ignorate fără avertisment.
Comenzi înrudite
filter(): Păstrează doar elementele pentru care o funcție returnează o valoare adevărată.itertools.takewhile() și dropwhile(): takewhile ia elementele cât timp o condiție este adevărată; dropwhile le sare cât timp este adevărată.List comprehension: Construiește o listă nouă dintr-o altă colecție, într-un singur rând.