Sobes.tech
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:

  1. filter takes two arguments: a function (function) and an iterable (iterable).
  2. It iterates over each element item in iterable.
  3. For each item, it calls function(item).
  4. If function(item) returns true (or a truthy value), item is included in the resulting iterator.
  5. If it returns false (or a falsy value), item is skipped.
  6. filter returns 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:

  • filter returns 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]
How does the filter() function work in Python? — Python - sobes.tech