Помогите пожалуйста с задачами на пайтон
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().
Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili

