# filter()

Функция `filter()` в Python используется для создания нового итерируемого объекта, содержащего элементы из исходного итерируемого объекта, которые удовлетворяют заданному условию.

**Назначение**: Основная цель функции `filter()` - отфильтровать элементы из итерируемого объекта (список, кортеж, строка, множество и т.д.) на основе заданного условия, представленного в виде функции или лямбда-выражения.

**Что возвращает**: Функция `filter()` возвращает итератор, содержащий элементы исходного итерируемого объекта, для которых заданное условие истинно.

**Описание**: Синтаксис функции `filter()` следующий:

```python
filter(function, iterable)
```

* `function` - функция или лямбда-выражение, которое определяет условие фильтрации. Она должна принимать один аргумент (элемент итерируемого объекта) и возвращать `True` или `False`.
* `iterable` - итерируемый объект (список, кортеж, строка, множество и т.д.), элементы которого нужно отфильтровать.

**Примеры использования**:

1. Фильтрация _<mark style="color:blue;">**списка чисел**</mark>_
2. Фильтрация _<mark style="color:purple;">**строки**</mark>_
3. Фильтрация _<mark style="color:orange;">**списка объектов**</mark>_
4. Использование `filter()` _<mark style="color:red;">**с функцией**</mark>_

{% tabs %}
{% tab title="1." %}
```python
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  # Выведет [2, 4, 6, 8, 10]
```
{% endtab %}

{% tab title="2." %}
```python
string = "Hello, World!"
vowels = filter(lambda char: char.lower() in 'aeiou', string)
print(''.join(vowels))  # Выведет "eoo"
```
{% endtab %}

{% tab title="3." %}
```python
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

people = [
    Person("Alice", 25),
    Person("Bob", 30),
    Person("Charlie", 35),
    Person("David", 40)
]

adults = filter(lambda person: person.age >= 30, people)
for adult in adults:
    print(f"{adult.name} ({adult.age})")
# Выведет:
# Bob (30)
# Charlie (35)
# David (40)
```
{% endtab %}

{% tab title="4." %}
```python
def is_even(num):
    return num % 2 == 0

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(is_even, numbers))
print(even_numbers)  # Выведет [2, 4, 6, 8, 10]
```
{% endtab %}
{% endtabs %}

Функция `filter()` часто используется в комбинации с другими функциями обработки данных, такими как `map()`, `sorted()` или `reduce()`, для создания более сложных и эффективных конвейеров обработки данных.
