Я бы спросил себя:
- Как выглядит список ha sh с большим количеством значений в нем?
- Как должен выглядеть результат?
Список ha sh может быть списком списков, реализованных в вашей ссылке. Теперь метод __iter__(self)
должен выдавать одно значение за другим. Возврат может быть списком, содержащим два значения.
Итак, это проблема обхода. Чтобы начать с некоторого кода, который вы можете реализовать в python:
my_list = [[['key4', 4]], None, [['key1', 1], ['key2', 2]], None,
[['key0', 0]], None, None, [['key3', 3]]]
def traverse(my_list=None):
if isinstance(my_list, (list, tuple)):
for value in my_list:
for subvalue in traverse(value):
yield subvalue
else:
yield my_list
print(list(traverse(my_list)))
Но это не решает вашу проблему: вам может потребоваться добавить еще два условия для правильного условия завершения:
- проверка длины списка в первую очередь и
- проверка, является ли значение в my_list списком и является ли первый элемент этого значения также списком (для просмотра вниз по дереву)