- How to Filter Lists in Python
- How to Filter Python Lists—The Three Approahces
- 1. For Loop Approach
- 2. List Comprehension Approach
- 3. Filter Python Lists Using the Filter() Function
- Filter() Function with Lambda Expressions
- What Are Lambda Functions in Python
- How to Filter Python Lists Using Lambdas
- Conclusion
- Further Reading
- Pandas: как фильтровать по значению индекса
- Пример 1: фильтрация по значениям числового индекса
- Пример 2. Фильтрация по нечисловым значениям индекса
- Дополнительные ресурсы
- №31 Функция Filter() / для начинающих
- Примеры функции filter()
- Фильтр нечетных чисел
How to Filter Lists in Python
To filter a list in Python, use the built-in filter() function.
For example, let’s filter a list of ages such that only the ages of 18+ are left:
ages = [4, 23, 32, 12, 88] adult_ages = filter(lambda age: age >= 18, ages) print(list(adult_ages))
Today you are going to learn three ways to filter a list in Python.
We start from a basic for loop approach. Then we use a list comprehension approach to make the code a bit more concise. Finally, we use the filter() function to make it even shorter.
How to Filter Python Lists—The Three Approahces
To filter a list in Python, you need to go through it element by element, apply a condition for each element, and save the ones that meet the criterion.
There are three approaches you can choose from:
- A for loop approach.
- A list comprehension.
- The built-in filter() function
Let’s go through each of these options.
1. For Loop Approach
The most straightforward and beginner-friendly approach to filtering a list is by using a for loop:
- A for loop goes through each element of a list.
- It checks if an element satisfies a condition.
- Based on the condition it adds the element to the result.
For instance, let’s filter out ages less than 18:
ages = [4, 23, 32, 12, 88] adult_ages = [] for age in ages: if age >= 18: adult_ages.append(age) print(adult_ages)
2. List Comprehension Approach
If you are unfamiliar with comprehensions, feel free to check out this article.
In short, list comprehension is a shorthand for looping through a list with one line of code. It follows this syntax:
[element for element in elements if condition]
For example, let’s filter a list of ages using a list comprehension:
ages = [4, 23, 32, 12, 88] adult_ages = [age for age in ages if age >= 18] print(adult_ages)
This piece of code does the exact same thing as the for loop in the 1st chapter.
Now, let’s move on to the 3rd approach to filtering a list using the filter() function.
3. Filter Python Lists Using the Filter() Function
The syntax of using the filter() function in Python is:
Where the filter() function applies a function called func for each element in a list called elements.
The filtering function is a condition that an element must satisfy. Otherwise, it will be dropped out from the result list.
The filter() function returns a filter object with the filtered elements. You can convert this filter object into a list using the list() function.
For example, let’s filter a list of ages such that only ages 18+ are left.
To do this, you need to first implement a filtering function that checks the ages. It can be a simple function that takes an age as its argument and checks it is 18+:
def age_check(age): return age >= 18
Now you can pass the age_check() function into the filter() function to filter a list of ages:
ages = [4, 23, 32, 12, 88] adult_ages = filter(age_check, ages) print(list(adult_ages))
- The filter() function takes each age from the ages list and applies age_check() to it.
- If an age passes the age_check() it will end up in the resulting list of filtered ages.
Now you understand how the filter() function works. It takes elements and filters them based on a criterion. The filtering criterion is a function applied for each element in the sequence. The result is a sequence that contains the values that met the criterion.
Filter() Function with Lambda Expressions
Next, let’s take it a step further by not implementing a separate filtering function. Instead, let’s implement the filtering functionality directly into the filter() function call as a lambda expression.
For example, let’s filter out ages less than 18 again:
ages = [4, 23, 32, 12, 88] adult_ages = filter(lambda age: age >= 18, ages) print(list(adult_ages))
To better understand how this piece of code works, you need to learn what lambda functions are.
What Are Lambda Functions in Python
In Python, lambda is a function that does not have a name. Lambda can take any number of arguments but only have a single expression.
Lambdas are useful when the functionality they provide is needed for a small period of time.
Lambdas follow this syntax:
lambda arguments : expression
For example, let’s create a regular function that takes two numbers and sums them up:
Now you can call this function:
Next, let’s create a lambda function to do the exact same:
This lambda function takes two arguments—the numbers a and b and sums them up. To return from lambda, the return keyword is not needed.
However, there is a problem with the lambda expression above. It does not have a name so there is no way for us to call it. If you want to call a lambda function, you need to do it right after defining it.
For example, to call the lambda that sums up two numbers:
(lambda a, b: a + b)(10, 20) # returns 30
Of course, summing up numbers this way is not clever as you could do 10 + 20 instead… But the point is to demonstrate how lambdas work.
In Python, lambda expressions are “one-time” functions you only need once. They are useful when you do not want to write a separate function for a task that you are going to perform only one time.
How to Filter Python Lists Using Lambdas
Now that you understand what a lambda expression is, let’s go back to the example of filtering a list of ages with a lambda function:
ages = [4, 23, 32, 12, 88] adult_ages = filter(lambda age: age >= 18, ages) print(list(adult_ages))
Instead of creating a separate age-checking function, you define a lambda expression lambda age: age >= 18 . This lambda expression is only used once for filtering the list. Thus it would be a waste of code to write a separate age_check() function as it would never be used in the codebase again.
Conclusion
Today you learned how to filter a list in Python.
To filter elements in a sequence in Python, you need to loop through them and check if they pass a condition. There are three ways to do this:
Thanks for reading. Happy filtering!
Further Reading
Pandas: как фильтровать по значению индекса
Вы можете использовать следующий базовый синтаксис для фильтрации строк кадра данных pandas на основе значений индекса:
df_filtered = df[df.index.isin (some_list)]
Это отфильтрует DataFrame pandas, чтобы включить только строки, значения индекса которых содержатся в some_list .
В следующих примерах показано, как использовать этот синтаксис на практике.
Пример 1: фильтрация по значениям числового индекса
Предположим, у нас есть следующие Pandas DataFrame:
import pandas as pd #create DataFrame df = pd.DataFrame() #view DataFrame print(df) points assists rebounds 0 18 5 11 1 22 7 8 2 19 7 10 3 14 9 6 4 14 12 6 5 11 9 5 6 20 9 9 7 28 4 12
Обратите внимание, что значения индекса являются числовыми.
Предположим, мы хотим отфильтровать строки, где значение индекса равно 1, 5, 6 или 7.
Для этого мы можем использовать следующий синтаксис:
#define list of index values some_list = [1, 5, 6, 7] #filter for rows in list df_filtered = df[df.index.isin (some_list)] #view filtered DataFrame print(df_filtered) points assists rebounds 1 22 7 8 5 11 9 5 6 20 9 9 7 28 4 12
Обратите внимание, что возвращаются только те строки, значение индекса которых равно 1, 5, 6 или 7.
Пример 2. Фильтрация по нечисловым значениям индекса
Предположим, у нас есть следующие Pandas DataFrame:
import pandas as pd #create DataFrame df = pd.DataFrame(, index=['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']) #view DataFrame print(df) points assists rebounds A 18 5 11 B 22 7 8 C 19 7 10 D 14 9 6 E 14 12 6 F 11 9 5 G 20 9 9 H 28 4 12
Обратите внимание, что значения индекса являются символьными значениями.
Предположим, мы хотим отфильтровать строки, где значение индекса равно A, C, F или G.
Для этого мы можем использовать следующий синтаксис:
#define list of index values some_list = ['A', 'C', 'F', 'G'] #filter for rows in list df_filtered = df[df.index.isin (some_list)] #view filtered DataFrame print(df_filtered) points assists rebounds A 18 5 11 C 19 7 10 F 11 9 5 G 20 9 9
Обратите внимание, что возвращаются только те строки, значение индекса которых равно A, C, F или G.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в pandas:
№31 Функция Filter() / для начинающих
Функция filter() в Python применяет другую функцию к заданному итерируемому объекту (список, строка, словарь и так далее), проверяя, нужно ли сохранить конкретный элемент или нет. Простыми словами, она отфильтровывает то, что не проходит и возвращает все остальное.
Объект фильтра — это итерируемый объект. Он сохраняет те элементы, для которых функция вернула True . Также можно конвертировать его в list, tuple или другие типы последовательностей с помощью фабричных методов.
В этом руководстве разберемся как использовать filter() с разными типами последовательностей. Также рассмотрим примеры, которые внесут ясность в принцип работы.
Функция filter() принимает два параметра. Первый — имя созданной пользователем функции, а второй — итерируемый объект (список, строка, множество, кортеж и так далее).
Она вызывает заданную функцию для каждого элемента объекта как в цикле. Синтаксис следующий:
# Синтаксис filter()
filter(in_function|None, iterable)
|__filter objectПервый параметр — функция, содержащая условия для фильтрации входных значений. Она возвращает True или False . Если же передать None , то она удалит все элементы кроме тех, которые вернут True по умолчанию.
Второй параметр — итерируемый объект, то есть последовательность элементов, которые проверяются на соответствие условию. Каждый вызов функции использует один из объектов последовательности для тестирования.
Возвращаемое значение — объект filter , который представляет собой последовательность элементов, прошедших проверку.
Примеры функции filter()
Фильтр нечетных чисел
В этом примере в качестве итерируемого объекта — список числовых значений