JustCaptain kod-buduschego
bd4b9bff90d440798790be6f4a2d484bc7890ce9
Перейти к файлу
Код
task_5.py
"""
Представим API:

[
["user1", "user2"],
["user3", "user4"],
["user5"]
]

Каждый вложенный список — отдельная страница ответа.

Создайте итератор, который позволяет получить всех пользователей как единый поток:

for user in api_iterator:
print(user)

Что отрабатывается

- вложенные структуры
- состояние итератора

"""


def api_iterator(collect: list[list[str]]):
    idx: int = 0
    idx_in: int = 0
    while True:
        try:
            if len(collect) != idx and len(collect[idx]) != idx_in:
                yield collect[idx][idx_in]
                idx_in += 1
                if idx_in == len(collect[idx]):
                    idx_in = 0
                    idx += 1
            else:
                raise StopIteration
        except StopIteration:
            break


api = api_iterator(collect=[["user1", "user2"], ["user3", "user4"], ["user5"]])
for user in api:
    print(user)