Имея этот список
l = [['a', 'b', 'c', 'd'],[[["d","d"]],['z', 'x', 'g', 'd'], ['z', 'C', 'G', 'd']]]
Я хотел бы получить функцию, извлекающую все вложенные списки и возвращающую
l = [['a', 'b', 'c', 'd'],["d","d"],['z', 'x', 'g', 'd'], ['z', 'C', 'G', 'd']]
, как сглаживание, но сохраняющее формирование списка каждого вложенного списка. Это самый близкий мне опыт, и я чувствую, что есть способ достичь своей цели без использования дополнительной структуры для фильтрации дубликатов. Кроме того, порядок имеет значение на уровне строк и списков.
def get_all_nested_list(l,returned_list):
nested_list = l
while isinstance(nested_list, list):
for elem in nested_list:
get_all_nested_list(elem,returned_list)
if isinstance(nested_list[0], str):
returned_list.append(nested_list)
nested_list = nested_list[0]
if __name__ == '__main__':
l = [['a', 'b', 'c', 'd'],[[["d","d"]],['z', 'x', 'g', 'd'], ['z', 'C', 'G', 'd']]]
l2 = []
get_all_nested_list(l,l2)
print(l2)
Любые другие способы сделать это выше, либо с помощью itertools, либо предлагая действительно правильный способ использования yield вместо передачи другого Список в качестве аргумента приветствуется.