top

Search

Python Tutorial

.

UpGrad

Python Tutorial

Filter in Python

Introduction

Python provides a built-in function known as "filter()" that can generate a new iterator when applied to an iterable, such as a list or dictionary. By specifying criteria, this iterator effectively filters out specific elements. While various methods, like python filter vs list comprehension and different types of for loops, can be used to filter items from a list, the filter python list offers a concise and efficient way to exclude elements, requiring fewer lines of code for the same task. This efficiency becomes particularly advantageous when dealing with large datasets.

Overview

The Python built-in `filter()` method operates on iterable objects like lists, tuples, dictionaries, and more. It selectively extracts specific elements by taking two arguments: a function and an iterable. Utilized as an input parameter, this function is responsible for filtering individual elements within the iterable, ultimately yielding an iterator. Python filter Objects are capable of being iterated over and are referred to as iterables.

What is Filter Function in Python? 

Python's built-in function, filter(), functions to filter elements from an iterable like lists or tuples. It operates by applying a specified condition and generates an iterator that exclusively includes elements meeting this particular criterion. The general syntax for employing the filter() function is as follows:

filter(function, iterable)

function: A function that takes an element from the iterable as its argument and returns either True or False. The filter() function will include elements for which the function returns True.

iterable: The iterable (e.g., list, tuple) from which elements are filtered.

Let's delve into the operation of the `filter()` function:

By applying the designated function to every element within the iterable,

Any element for which the function yields True is incorporated into the resulting set,

Conversely, any element for which the function yields False is omitted from the outcome,

Ultimately, the `filter()` function furnishes an iterator that holds the elements that passed through the filter.

Illustrated below is a fundamental example that employs the `filter()` function to separate even numbers from a list:

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# Define a function to check if a number is even
def is_even(x):
    return x % 2 == 0
# Use filter() to filter even numbers
even_numbers = list(filter(is_even, numbers))
print(even_numbers)  # Output: [2, 4, 6, 8, 10]

In this example:

Defining a custom function named "is_even(x)," we check whether a number is even, returning True for even numbers and False for odd ones. Subsequently, we employ the filter() function to sift through the numbers list, storing the outcome in the even_numbers variable.

The filter() function is a powerful tool for selectively extracting elements from an iterable based on specific conditions, making it useful for various data processing tasks in Python.

Python filter() Syntax 

The syntax of filter function Python is as follows,

filter(function, iterable)

Parameters of filter() in Python 

Two arguments are required by the filter() method.

function: used to determine whether or not each iterable value is true for this function.

iterable: The iterables on which filtering will be performed, such as sets, lists, tuples, etc.

Return Value of filter() in Python 

Return Type: <class 'filter'>

All the input iterable's items that passed the function check are included in the iterator that the filter() method returns.

Python filter Function Examples 

Following are the Python filter examples:

Python Filter Function with a Custom Function

In this example, vowels from the Python List are being filtered out using the filter object. Python in conjunction with a special function called "fun()".

# function that filters vowels
def fun(variable):
    letters = ['a', 'e', 'i', 'o', 'u']
    if (variable in letters):
        return True
    else:
        return False
# sequence
sequence = ['g', 'e', 'e', 'j', 'k', 's', 'p', 'r']
# using filter function
filtered = filter(fun, sequence)
print('The filtered letters are:')
for s in filtered:
    print(s)

Output:

The filtered letters are: 

e
e

Filter Function in Python with Lambda

When using filter() with a lambda function, you create an iterator that yields only the elements that satisfy the condition specified in the lambda function. Here's how it works:

filter(lambda x: condition, iterable)

lambda x: This is a lambda function that takes an element x from the iterable.

condition: The condition to be checked for each element x. If the condition evaluates to True, the element is included in the result.

Here's an example to illustrate using filter() with a lambda function:

# a list contains both even and odd numbers.
seq = [0, 1, 2, 3, 5, 8, 13]
# result contains odd numbers of the list
result = filter(lambda x: x % 2 != 0, seq)
print(list(result))
# result contains even numbers of the list
result = filter(lambda x: x % 2 == 0, seq)
print(list(result))

Output :
[1, 3, 5, 13]
[0, 2, 8]

Filter Function in Python with Lambda and Custom Function

You can use the filter() function in Python with both a lambda function and a custom function to filter elements from an iterable.  

Here's an example that demonstrates how to do this:

Suppose you have a list of numbers, and you want to filter out the numbers that are divisible by 3 using both a lambda function and a custom filtering function.

# List of numbers
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# Define a custom function for filtering
def is_divisible_by_3(x):
    return x % 3 == 0

# Using filter with a lambda function
filtered_numbers_lambda = list(filter(lambda x: x % 3 == 0, numbers))

# Using filter with the custom filtering function
filtered_numbers_custom = list(filter(is_divisible_by_3, numbers))

print("Filtered numbers using lambda function:", filtered_numbers_lambda)
print("Filtered numbers using custom function:", filtered_numbers_custom)

In this example:

We have a list of numbers called numbers.

We define a custom filtering function called is_divisible_by_3(x) that checks if a number is divisible by 3.

We use filter() with a lambda function to filter numbers that are divisible by 3, and the result is stored in filtered_numbers_lambda.

We also use filter() with the custom filtering function is_divisible_by_3, and the result is stored in filtered_numbers_custom.

Both approaches achieve the same result, filtering out numbers that are divisible by 3 from the numbers list. The use of a custom function allows for more complex and reusable filtering logic, while the lambda function provides a concise way to define the filtering condition inline.

Applications of Filter in Python 

Python's filter() function is used to pick out specific data from a vast collection of data. Additionally, it is an alternative for list comprehension since filters have low memory and execution time requirements. The filter() function in Python, a built-in feature, allows for the selection of elements based on specific conditions, whether through the utilization of lambda functions or predefined functions. It operates on iterable data structures such as lists, tuples, or filter list python string contains. It yields an iterator comprising elements for which the condition evaluates as True. Below are some typical use cases of the filter() function:

Filtering Elements by Condition:

The primary use of filter() is to filter elements from a sequence that meet a specified condition.

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  # Output: [2, 4, 6, 8, 10]

Removing Duplicates:

  • filter() can be used to remove duplicate values from a list by filtering based on a set or other collection.

data = [1, 2, 2, 3, 4, 4, 5]
unique_values = list(filter(lambda x: x not in seen.add(x) and (x not in seen or False), data))
print(unique_values)  # Output: [1, 2, 3, 4, 5]

Filtering based on Custom Criteria:

You can use a custom function as the filtering criterion.

def is_positive(number):
    return number > 0

numbers = [-2, -1, 0, 1, 2]
positive_numbers = list(filter(is_positive, numbers))
print(positive_numbers)  # Output: [1, 2]

Traditional For Loop vs Filter Function 

Traditional for loops and the filter() function in Python are both used for iterating over sequences (e.g., lists, tuples) and processing elements based on certain conditions. However, they have different use cases and characteristics. Let's compare them with examples to illustrate their differences.

Traditional for Loop:

A traditional for loop allows you to iterate over elements in a sequence one by one, and you can apply custom logic within the loop to filter or process elements as needed. It provides full control over the iteration process and allows for more complex logic.

Example using a traditional for loop:

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = []
for num in numbers:
    if num % 2 == 0:
        even_numbers.append(num)
print(even_numbers)  # Output: [2, 4, 6, 8, 10]

In this example, we use a for loop to iterate through the numbers list and filter even numbers by checking the remainder when dividing by 2.

Pros of Traditional for Loop:

  • Full control over the iteration process.

  • Flexibility to apply complex logic.

  • Allows for in-place modifications of the original list.

Cons of Traditional for Loop:

  • Code can be more verbose and require more lines.

  • May be less concise for simple filtering tasks.

filter() Function:

The filter() function, a native Python feature, is purpose-built for selectively sifting elements from an iterable according to a defined condition, ultimately yielding an iterator comprising elements that meet the specified criteria. It excels in succinctly handling straightforward filtering assignments.

Example using the filter() function:

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda num: num % 2 == 0, numbers))
print(even_numbers)  # Output: [2, 4, 6, 8, 10]

In this example, we use the filter() function to create a new list containing even numbers from the numbers list.

Pros of filter() Function:

  • Concise and expressive for simple filtering tasks.

  • Returns an iterator, which can be more memory-efficient for large datasets.

  • Functional programming style allows for a more declarative approach.

Cons of filter() Function:

  • May be less intuitive for complex filtering or processing tasks.

  • Limited to filtering; you may need additional functions (e.g., map()) for other operations.

Use a traditional for loop when you need fine-grained control over the iteration process and when you want to apply complex logic or modify the original sequence. On the other hand, use the filter() function when you have a simple filtering task and want a more concise and functional programming-style approach. 

Conclusion

A valuable tool in Python for handling iterable data structures is the `filter()` function. It simplifies the tasks of data manipulation, analysis, and data extraction that pertain to your programming needs. By segregating the filtering logic from the iteration process, it enables you to craft code that is both more expressive and reusable. Whether you use a custom function or a lambda function as the filtering criterion, filter() provides a convenient way to extract the elements that meet your criteria, creating a filtered result. 

FAQs

1. What does Python's filter () do?

Python's built-in filter() function allows you to iterate through an iterable and retrieve the components that satisfy a given condition. A filtering method is what is being used here.

2. How do I write a Python filter?

'filter()' is a Python function that is built-in for filtering list elements. 'filter(fn, list)' is required, which calls for a Python filter array. In this instance, a filter_height function will be written. When the height is less than 150, True is returned; otherwise, False.

Leave a Reply

Your email address will not be published. Required fields are marked *