Возвращает итератор, который пачками размера `size` отдает элементы.

Сделайте генератор, который читает не больше size элементов исходного iterable через itertools.islice. Последняя пачка может быть короче; размер должен быть положительным целым.

Короткий ответ

Что ответить на собеседовании

Сделайте генератор, который читает не больше size элементов исходного iterable через itertools.islice. Последняя пачка может быть короче; размер должен быть положительным целым.

Подробный разбор

Ответ с пояснениями

Сделайте генератор, который читает не больше size элементов исходного iterable через itertools.islice. Последняя пачка может быть короче; размер должен быть положительным целым.

from itertools import islice

def batches(iterable, size):
    if not isinstance(size, int) or isinstance(size, bool) or size <= 0:
        raise ValueError("size must be a positive integer")
    iterator = iter(iterable)
    while True:
        batch = list(islice(iterator, size))
        if not batch:
            return
        yield batch

Функция работает и с одноразовым итератором, не загружая его целиком. На каждый элемент приходится одно чтение: O(n) общего времени и O(size) памяти для текущей пачки, если потребитель не накапливает все результаты. Валидация генераторной функции выполняется при начале итерации.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее