Result The filter() built-in does not return another list. It returns an iterator. We can use the list() function to create a new list.
numbers = [10, 20, 0, 0, 30, 40, -10]
# Filter out numbers equal to or less than zero.
result = list(filter(lambda n: n > 0, numbers))
print(result)[10, 20, 30, 40]
Range example. The filter() method can be used with a range as the second argument. Here we have a range from 0 through 9 inclusive. We then call filter on this range.
Detail The lambda receives each value in the range and names it "x." If it is evenly divisible by 2, it returns true.
Detail The lambda filters out all numbers that are not evenly divisible by 2 (all odd numbers). We are left with even numbers.
# Use a range with filter.# ... Return true in lambda if number is even.# Even numbers are all evenly divisible by 2.# We then print all even numbers in the range with filtering.
for value in filter(lambda x: x % 2 == 0, range(0, 10)):
print("EVEN NUMBER IN RANGE:", value);EVEN NUMBER IN RANGE: 0
EVEN NUMBER IN RANGE: 2
EVEN NUMBER IN RANGE: 4
EVEN NUMBER IN RANGE: 6
EVEN NUMBER IN RANGE: 8
A note. When using filter, we must specify what elements we want to keep—all others are removed. So when the test succeeds in the lambda (and it returns true) we keep the element.
A review. Filter() is a useful built-in. But as with other functional constructs, it is best to use it only when it makes code clearer. A for-loop may be preferred for simplicity.