Итератор списка списков
Нужно написать итератор списка списков! Есть такой код, но он несколько раз выводит 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)