Skip to content

Commit b5a15e3

Browse files
committed
FilterMap exercise
1 parent d087a4e commit b5a15e3

File tree

2 files changed

+6
-15
lines changed

2 files changed

+6
-15
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+
result = []
8+
for item in input_array:
9+
(include, new_item) = func(item)
10+
if include:
11+
result.append(new_item)
12+
return result

filter_map/test_filter_map.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,14 @@ def square_positive(x: int) -> tuple[bool, int]:
1616

1717

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

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

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

0 commit comments

Comments
 (0)