Python itertools.filterfalse() Function
The Python itertools.filterfalse() function is used to filter elements from an iterable by removing those that satisfy a given predicate function. It returns only those elements for which the predicate evaluates to False.
This function is useful when you need to exclude specific elements based on a condition.
Syntax
Following is the syntax of the Python itertools.filterfalse() function −
itertools.filterfalse(predicate, iterable)
Parameters
This function accepts the following parameters −
- predicate: A function that returns True or False. Elements are included only if the function returns False.
- iterable: The iterable to be processed.
Return Value
This function returns an iterator containing elements from iterable where predicate evaluates to False.
Example 1
Following is an example of the Python itertools.filterfalse() function. Here, we remove even numbers from the list −
import itertools
def is_even(n):
return n % 2 == 0
numbers = [1, 2, 3, 4, 5, 6, 7, 8]
result = itertools.filterfalse(is_even, numbers)
for num in result:
print(num)
Following is the output of the above code −
1
3
5
7
Example 2
Here, we use itertools.filterfalse() function to filter out words that start with an uppercase letter −
import itertools
def starts_with_upper(s):
return s[0].isupper()
words = ["apple", "Banana", "cherry", "Date", "elderberry"]
filtered_words = itertools.filterfalse(starts_with_upper, words)
for word in filtered_words:
print(word)
Output of the above code is as follows −
apple
cherry
elderberry
Example 3
Now, we use itertools.filterfalse() function to remove tuples where the first element is negative −
import itertools
def is_negative(t):
return t[0] < 0
data = [(-2, "A"), (-1, "B"), (0, "C"), (1, "D"), (2, "E")]
result = itertools.filterfalse(is_negative, data)
for item in result:
print(item)
The result obtained is as shown below −
(0, "C")
(1, "D")
(2, "E")
Example 4
We can use itertools.filterfalse() function to remove empty strings from a list of words −
import itertools
def is_empty(s):
return s == ""
words = ["hello", "", "world", "", "python", ""]
filtered_words = itertools.filterfalse(is_empty, words)
for word in filtered_words:
print(word)
The result produced is as follows −
hello
world
python
python_modules.htm