Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 6 additions & 12 deletions filter_map/filter_map.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,9 @@
class FilterMapExercise:
@staticmethod
def filter_map(func: Callable[[Any], Tuple[bool, Any]], input_array: List[Any]) -> List[Any]:
"""
Реализовать функцию, которая ведет себя как filter и map. К каждому значению из
списка применяется функция, которая в ответ возвращает кортеж
(булево значение, результат работы функции).
Если первый элемент кортежа истина, то результат добавляется в список.

Принимает в качестве аргументов функцию и итерируемый источник, а возвращает список.
:param func: Функция, применяемая к каждому элементу списка.
:param input_array: Исходный список.
:return: Отфильтрованный список.
"""
pass
return list(
map(
lambda item: item[1],
filter(lambda item: item[0], map(lambda item: func(item), input_array)),
)
)
5 changes: 0 additions & 5 deletions filter_map/test_filter_map.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
import pytest

from .filter_map import FilterMapExercise


Expand All @@ -16,17 +14,14 @@ def square_positive(x: int) -> tuple[bool, int]:


class TestFilterMapExercise:
@pytest.mark.skip
def test_filter_map_empty(self) -> None:
empty = FilterMapExercise.filter_map(is_not_null_even, [])
assert empty == []

@pytest.mark.skip
def test_filter_map_is_not_null_even(self) -> None:
filtered_list = FilterMapExercise.filter_map(is_not_null_even, [-1, 0, 1, 2, 4])
assert filtered_list == [2, 4]

@pytest.mark.skip
def test_filter_map_square_positive(self) -> None:
filtered_list = FilterMapExercise.filter_map(square_positive, [-1, 0, 1, 2, 4])
assert filtered_list == [0, 1, 4, 16]