Вопрос задан 25.07.2026 в 08:21. Предмет Информатика. Спрашивает Смаковский Серёжа.

Помогите пожалуйста с задачами на пайтон

1.написать свои функции:
zip
filter
reduce

2.Написать свои функции используя генераторы:
map()
filter()

Перейти к ответам

Ответы на вопрос

Отвечает Миненков Влад.

Вот реализации собственных функций zip, filter и reduce без использования встроенных, а затем версии map и filter через генераторы.

1. Свои функции zip, filter, reduce

zip — объединяет элементы из нескольких итерируемых объектов в кортежи. Если длины разные, останавливается по самой короткой.

def my_zip(*iterables):
iterators = [iter(it) for it in iterables]
while True:
try:
yield tuple(next(it) for it in iterators)
except StopIteration:
return

filter — возвращает элементы, для которых функция возвращает истину.

def my_filter(func, iterable):
for item in iterable:
if func(item):
yield item

reduce — последовательно применяет функцию к элементам, накапливая результат.

def my_reduce(func, iterable, initial=None):
it = iter(iterable)
if initial is None:
try:
value = next(it)
except StopIteration:
raise TypeError("reduce() of empty sequence with no initial value")
else:
value = initial
for element in it:
value = func(value, element)
return value

2. Генераторные версии map и filter

map через генератор:

def my_map(func, iterable):
for item in iterable:
yield func(item)

filter через генератор (уже показан выше, он и есть генератор):

def my_filter(func, iterable):
for item in iterable:
if func(item):
yield item

Все эти функции можно использовать в циклах или превращать в список вызовом list().

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос