ФИЛЬТРАЦИЯ СПИСКОВ
Основной задачей фильтрации списков обычно является получение такого списка, элементы которого отвечают предустановленным условиям, а все прочие элементы отсеиваются. Разумеется, мы предполагаем, что у нас есть некий исходный список.
Для реализации фильтрации служит функция filter из стандартной библиотеки python
Первым аргументом она принимает функцию фильтрации (callable объект), аргументом которой будет передан каждый элемент списка. Функция должна вернуть булево значение: True - если элемент должен остаться в списке, или False, если элемент из списка должен быть исключен.
Рассмотрим на примере:
Допустим, у нас есть всё тот же список [1,2,3,4,5,6,7,8,9]
Мы хотим оставить в нем только чётные числа.
Опишем функцию фильтрации:
Здесь мы проверяем, что остаток от деления числа на 2 равен нулю (четное число), что соответствует булеву False, и поскольку нам нужно возвращать в этом случае True - мы меняем его булево значение на противоположное оператором not
Теперь отфильтруем наш список:
Теперь наш список newlst содержит только четные элементы: [2, 4, 6, 8]
Как и в случае с маппингом, filter возвращает итерируемый объект, а не список. Если нужен именно список (или кортеж) его нужно привести к этому виду соответствующим методом list() или tuple(). Отмечу, однако, что если с результатом фильтра планируется просто провести работу как с итерируемой величиной (простейший, но самый частый случай) - дополнительных преобразований не требуется. Можно работать прямо с объектом filter
Основной задачей фильтрации списков обычно является получение такого списка, элементы которого отвечают предустановленным условиям, а все прочие элементы отсеиваются. Разумеется, мы предполагаем, что у нас есть некий исходный список.
Для реализации фильтрации служит функция filter из стандартной библиотеки python
Первым аргументом она принимает функцию фильтрации (callable объект), аргументом которой будет передан каждый элемент списка. Функция должна вернуть булево значение: True - если элемент должен остаться в списке, или False, если элемент из списка должен быть исключен.
Рассмотрим на примере:
Допустим, у нас есть всё тот же список [1,2,3,4,5,6,7,8,9]
Мы хотим оставить в нем только чётные числа.
Опишем функцию фильтрации:
Python:
def is_even(x):
return not x%2
Теперь отфильтруем наш список:
Python:
lst = [1,2,3,4,5,6,7,8,9]
newlst = list(filter(is_even,lst))
Как и в случае с маппингом, filter возвращает итерируемый объект, а не список. Если нужен именно список (или кортеж) его нужно привести к этому виду соответствующим методом list() или tuple(). Отмечу, однако, что если с результатом фильтра планируется просто провести работу как с итерируемой величиной (простейший, но самый частый случай) - дополнительных преобразований не требуется. Можно работать прямо с объектом filter