1. Introduction
In Python, the filter() function is used to filter out elements from an iterable based on a function that returns either True or False. It provides an elegant way to perform element-wise filtering operations on sequences. In this article, we will explore the filter() function in detail and provide examples of its usage in Python 3.
2. Syntax
The syntax of the filter() function is as follows:
filter(function, iterable)
2.1 Parameters
The filter() function takes two parameters:
function: A function that returns a boolean value.
iterable: An iterable object like a list, tuple, or string.
2.2 Return Value
The filter() function returns an iterator containing the elements from the iterable for which the function returns True.
3. Examples
3.1 Filtering Even Numbers
Let's start with a simple example where we want to filter out even numbers from a list of integers. We can define a function that returns True if a number is even, and False otherwise. Then we can pass this function along with the list of numbers to the filter() function.
def is_even(n):
return n % 2 == 0
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
filtered_numbers = filter(is_even, numbers)
for number in filtered_numbers:
print(number)
In the code above, the is_even() function checks if a number is divisible by 2 without a remainder (i.e., it is even). Then we pass this function along with the numbers list to the filter() function. The resulting filtered_numbers object is an iterator that contains only the even numbers from the numbers list. Finally, we loop over the filtered_numbers iterator and print each number.
3.2 Filtering Using Lambda Functions
In some cases, it is more convenient to use lambda functions instead of defining a separate function for filtering. Lambda functions are anonymous functions that can be defined in a single line. Let's modify the previous example to use a lambda function for filtering even numbers.
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
filtered_numbers = filter(lambda n: n % 2 == 0, numbers)
for number in filtered_numbers:
print(number)
In the code above, we define a lambda function that takes a number n as an argument and returns True if n is even, and False otherwise. This lambda function is then passed to the filter() function along with the numbers list. The result is the same as the previous example.
3.3 Filtering Strings
The filter() function can also be used to filter out strings based on certain conditions. Let's say we want to filter out all the strings from a list that have a length greater than 5.
words = ["apple", "banana", "grape", "watermelon", "kiwi"]
filtered_words = filter(lambda w: len(w) > 5, words)
for word in filtered_words:
print(word)
In the code above, we use a lambda function to check if the length of a word is greater than 5. The filter() function then returns an iterator that contains only the words satisfying this condition. We iterate over this iterator and print each filtered word.
4. Conclusion
In this article, we've learned about the filter() function in Python 3 and explored its various use cases. We've seen how it can be used to filter out elements from a list based on a given condition using both regular functions and lambda functions. The filter() function provides a concise and elegant way to perform filtering operations on iterable objects. By leveraging its power and flexibility, you can simplify your code and make it more readable.