# Python: Filter a List With a Lambda Function

A common requirement when you write a Python program is to be able to filter lists based on given conditions. This tutorial will show you how to filter a list with a lambda function in Python.

The applications of filtering lists are endless and we will go through examples that show you some of those.

## How to Filter a List Using a Lambda Expression in Python

`Python provides a built-in function that used with a lambda function allows you to filter a list based on specific conditions: the filter() function.`

Below you can see the syntax of the filter() function that takes two arguments: the first argument is a function and the second argument is an iterable:

``filter(function, iterable)``

By using the filter() function, given a list, you can create a new list that contains only the elements in the original list that match a filtering condition. A lambda function allows you to define this condition.

For example, given a list of numbers, let’s see how to create a list that only includes the negative ones.

Here is the lambda function we will use:

``lambda x : x < 0``

Open the Python shell and execute this lambda passing a couple of numbers to it. This will show you how this lambda expression works.

``````>>> (lambda x : x < 0)(-1)
True
>>> (lambda x : x < 0)(3)
False``````

Note: in the code snippet above we have used parentheses to call our lambda function and pass an argument to it. If you want to know more about this syntax, go through the CodeFatherTech tutorial about the basics of lambdas in Python.

Our lambda function checks if a number is negative and returns a boolean with the following value:

• True if the argument is negative.
• False if the argument is positive.

Now, let’s apply the filter() function and this lambda to a list of integers to get only the negative ones:

``````>>> numbers = [1, 3, -1, -4, -5, -35, 67]
>>> negative_numbers = list(filter(lambda x : x < 0, numbers))
>>> negative_numbers
[-1, -4, -5, -35]``````

You get back the expected result, a list containing all the negative integers.

The filter function returns a list that contains a subset of the elements in the original list.

## Examples of filter() and lambda Functions Used to Filter a List

Let’s have a look at a few more examples of filtering. These examples will give you more ideas on how to use Python lambdas for filtering lists.

### Given a list of Linux commands return the ones starting with the letter ‘c’

``````>>> commands = ['ls', 'cat', 'find', 'echo', 'top', 'curl']
>>> list(filter(lambda cmd: cmd.startswith('c'), commands))
['cat', 'curl']``````

### Generate a list of numbers with the Python range function and return the numbers greater than four:

``````>>> list(filter(lambda x: x > 4, range(15)))
[5, 6, 7, 8, 9, 10, 11, 12, 13, 14]``````

### Filter Even Numbers from a List

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

### Filtering Words Longer Than a Certain Length

``````>>> words = ["lambda", "filter", "python", "list", "programming", "function"]
>>> list(filter(lambda w: len(w) > 6, words))
['programming', 'function']``````

## FAQ

1. Q: How does `filter()` differ from a list comprehension?
• A: Both `filter()` and list comprehensions can create a new list based on conditions, but list comprehensions allow for more complex operations. They can also include a `else` clause, which is not supported by `filter()`.
2. Q: Can I use the `filter()` function to modify the elements of a list, not just filter them?
• A: No, the `filter()` function can only filter elements of a list based on a condition. If you want to modify elements, consider using `map()` or a list comprehension.
3. Q: Is it possible to use `filter()` without passing a lambda function to it?
• A: Yes, with `filter()` you can use any function that takes a single argument and returns a boolean value. This can be a built-in function or a user-defined function.
4. Q: How can I convert the result of the `filter()` function back to a list?
• A: The `filter()` function returns an iterator. To convert it back to a list, you can use the `list()` constructor.
5. Q: What happens if the lambda function passed to the `filter()` function does not return a boolean value?
• A: The `filter()` function expects the function it receives (including lambdas) to return a boolean value. Non-boolean return values are treated as truthy or falsey. In other words, non-empty strings, non-zero numbers, and other non-null objects are considered `True`. Empty strings, the number zero, `None` are considered `False`.

## Conclusion

Well done for completing this tutorial!

Now you can start using the filter() and lambda functions to filter elements in a list based on what you need in your Python programs.

Make sure the examples in this tutorial on how to use filter() in Python are clear by trying them in your own Python shell or IDE.

Related article: As mentioned previously, if you want to have a deeper understanding of what lambda functions are, go through the introductory CodeFatherTech tutorial about lambda functions in Python.