Итератор списка списков

Нужно написать итератор списка списков! Есть такой код, но он несколько раз выводит None вместе с другими объектами списков.

Условие: Вывод элементов должен быть вниз друг за другом.

nested_list = [
    ['a', 'b', 'c'],
    ['d', 'e', 'f'],
    [1, 2, None],
]

class Nested_iter:
    def __init__(self,nested_list):
        self.start = -1
        self.end = len(nested_list)

    def __iter__(self):
        return self

    def __next__(self):
        self.start += 1
        if self.start == self.end:
            raise StopIteration
        x = nested_list[self.start]
        for elem in x:
            print(elem)


if __name__ == '__main__':
    for elem in Nested_iter(nested_list):
        print(elem)

Ответы (1 шт):

Автор решения: Zhihar

__next__ желательно чтобы возвращала объект иначе None и получается

можно так:

nested_list = [
    ['a', 'b', 'c'],
    ['d', 'e', 'f'],
    [1, 2, None],
]

class Nested_iter:
    def __init__(self,nested_list):
        self.start = -1
        self.end = len(nested_list)

    def __iter__(self):
        return self

    def __next__(self):
        self.start += 1
        if self.start == self.end:
            raise StopIteration
        return self

    def __str__(self):
        return '\n'.join(str(elem) for elem in nested_list[self.start])


if __name__ == '__main__':
    for elem in Nested_iter(nested_list):
        print(elem)
→ Ссылка