Junior
How does the filter() function work in Python?
sobes.tech AI
Answer from AI
The filter(function, iterable) function creates an iterator from those elements of iterable for which function(item) returns true.
How it works:
filtertakes two arguments: a function (function) and an iterable (iterable).- It iterates over each element
iteminiterable. - For each
item, it callsfunction(item). - If
function(item)returns true (or a truthy value),itemis included in the resulting iterator. - If it returns false (or a falsy value),
itemis skipped. filterreturns an iterator that lazily generates filtered elements.
Example usage:
# Filtering even numbers
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers_iterator = filter(lambda x: x % 2 == 0, numbers)
# Convert iterator to list for display
print(list(even_numbers_iterator))
# Filtering non-empty strings
strings = ["hello", "", "world", None, "python"]
non_empty_strings_iterator = filter(None, strings) # None as function acts as identity and filters out falsy values
print(list(non_empty_strings_iterator))
Difference from list comprehensions:
filterreturns an iterator (lazy evaluation), which is memory-efficient for large data.- List comprehension creates a new list immediately (requires more memory).
| Feature | filter() |
List comprehension |
|---|---|---|
| Return type | Iterator | List |
| Evaluation | Lazy (on demand) | Eager (immediately) |
| Memory | Efficient for large data | Can consume a lot of memory |
| Syntax | filter(func, iterable) |
[item for item in iterable if condition] |