Skip to content

Commit b26c688

Browse files
committed
FilterMap exercise
1 parent 96ce66d commit b26c688

File tree

2 files changed

+6
-17
lines changed

2 files changed

+6
-17
lines changed

filter_map/filter_map.py

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,9 @@
44
class FilterMapExercise:
55
@staticmethod
66
def filter_map(func: Callable[[Any], Tuple[bool, Any]], input_array: List[Any]) -> List[Any]:
7-
"""
8-
Реализовать функцию, которая ведет себя как filter и map. К каждому значению из
9-
списка применяется функция, которая в ответ возвращает кортеж
10-
(булево значение, результат работы функции).
11-
Если первый элемент кортежа истина, то результат добавляется в список.
12-
13-
Принимает в качестве аргументов функцию и итерируемый источник, а возвращает список.
14-
:param func: Функция, применяемая к каждому элементу списка.
15-
:param input_array: Исходный список.
16-
:return: Отфильтрованный список.
17-
"""
18-
pass
7+
return list(
8+
map(
9+
lambda item: item[1],
10+
filter(lambda item: item[0], map(lambda item: func(item), input_array)),
11+
)
12+
)

filter_map/test_filter_map.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import pytest
2-
31
from .filter_map import FilterMapExercise
42

53

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

1715

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

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

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

0 commit comments

Comments
 (0)