/
Kirby
/
Iterators.Generators.Yield
Обзор
Документация
Войти
/
Kirby
/
Iterators.Generators.Yield
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
task3.py
41 строка
1 KB
Alex
Initial commit
20 май 2026, 21:39
20 май 2026, 21:39
2966c34
Код
Авторство
О чём код?
class FlatIterator: def __init__(self, list_of_list): self.list_of_list = list_of_list self.stack = [iter(list_of_list)] def __iter__(self): return self def __next__(self): while self.stack: try: item = next(self.stack[-1]) except StopIteration: self.stack.pop() continue if isinstance(item, list): self.stack.append(iter(item)) else: return item raise StopIteration def test_3(): list_of_lists_2 = [ [['a', 'b', 'c']], ['d', 'e', [['f'], 'h'], False], [1, 2, None, [[[['!']]]], []] ] for flat_iterator_item, check_item in zip( FlatIterator(list_of_lists_2), ['a', 'b', 'c', 'd', 'e', 'f', 'h', False, 1, 2, None, '!'] ): assert flat_iterator_item == check_item assert list(FlatIterator(list_of_lists_2)) == ['a', 'b', 'c', 'd', 'e', 'f', 'h', False, 1, 2, None, '!'] if __name__ == '__main__': test_3()