HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Понятие "фильтрация" интуитивно понятно каждому человеку. Мы пьём фильтрованную воду и фильтруем то, что говорим. В программировании практически то же самое. Операция "фильтрация" по отношению к коллекции означает, что мы отбираем из неё только те элементы, которые удовлетворяют нужному условию. Типичная задача может выглядеть так - выбрать пользователей старше 10 лет:</p>
1 <p>Понятие "фильтрация" интуитивно понятно каждому человеку. Мы пьём фильтрованную воду и фильтруем то, что говорим. В программировании практически то же самое. Операция "фильтрация" по отношению к коллекции означает, что мы отбираем из неё только те элементы, которые удовлетворяют нужному условию. Типичная задача может выглядеть так - выбрать пользователей старше 10 лет:</p>
2 <p>Фильтрация встречается так же часто как отображение. Общая схема кода при фильтрации практически один в один как и в отображении, кроме пары ключевых моментов:</p>
2 <p>Фильтрация встречается так же часто как отображение. Общая схема кода при фильтрации практически один в один как и в отображении, кроме пары ключевых моментов:</p>
3 <ul><li>Фильтрация возвращает коллекцию либо того же размера, если ничего не было отфильтровано, либо меньшего. Она может вернуть даже пустую коллекцию, если ни один из элементов не подошёл.</li>
3 <ul><li>Фильтрация возвращает коллекцию либо того же размера, если ничего не было отфильтровано, либо меньшего. Она может вернуть даже пустую коллекцию, если ни один из элементов не подошёл.</li>
4 <li>Фильтрация всегда возвращает исходные элементы. Она никогда не делает отображение. Если на вход фильтрации поступил список пользователей, то список пользователей будет и на выходе.</li>
4 <li>Фильтрация всегда возвращает исходные элементы. Она никогда не делает отображение. Если на вход фильтрации поступил список пользователей, то список пользователей будет и на выходе.</li>
5 </ul><p>Теперь посмотрим, как выглядит фильтрация при использовании встроенной функции высшего порядка<a>filter()</a>:</p>
5 </ul><p>Теперь посмотрим, как выглядит фильтрация при использовании встроенной функции высшего порядка<a>filter()</a>:</p>
6 <p>Функция, передаваемая в filter(), должна быть предикатом. То есть её задача вернуть либо True, либо False для каждого элемента коллекции. Значение, которое возвращается, никак не используется - оно всего лишь говорит о том, включать ли текущий элемент или нет. Новички часто делают ошибку на этом этапе и начинают возвращать из фильтра то, что они бы хотели увидеть в результате, а для этого надо применять map().</p>
6 <p>Функция, передаваемая в filter(), должна быть предикатом. То есть её задача вернуть либо True, либо False для каждого элемента коллекции. Значение, которое возвращается, никак не используется - оно всего лишь говорит о том, включать ли текущий элемент или нет. Новички часто делают ошибку на этом этапе и начинают возвращать из фильтра то, что они бы хотели увидеть в результате, а для этого надо применять map().</p>
7 <p>На выходе функция возвращает, так же как и map(), итератор. Получить все элементы из итератора так же можно с помощью list()</p>
7 <p>На выходе функция возвращает, так же как и map(), итератор. Получить все элементы из итератора так же можно с помощью list()</p>
8 <h2>Реализация</h2>
8 <h2>Реализация</h2>
9 <p>Напишем свою собственную функцию my_filter(), работающую аналогично встроенной filter():</p>
9 <p>Напишем свою собственную функцию my_filter(), работающую аналогично встроенной filter():</p>
10  
10