From b26c688f17149615f4d02482c42d0f8fd5c05fd0 Mon Sep 17 00:00:00 2001 From: Alexey Solovyev Date: Thu, 15 Jun 2023 01:07:27 +0800 Subject: [PATCH] FilterMap exercise --- filter_map/filter_map.py | 18 ++++++------------ filter_map/test_filter_map.py | 5 ----- 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/filter_map/filter_map.py b/filter_map/filter_map.py index a27f9ae..65b46c9 100644 --- a/filter_map/filter_map.py +++ b/filter_map/filter_map.py @@ -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)), + ) + ) diff --git a/filter_map/test_filter_map.py b/filter_map/test_filter_map.py index 5355a2d..83bec16 100644 --- a/filter_map/test_filter_map.py +++ b/filter_map/test_filter_map.py @@ -1,5 +1,3 @@ -import pytest - from .filter_map import FilterMapExercise @@ -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]