Как мне обработать вложенный список?

Предположим, у меня есть маркированный список, как это:

* list item 1
* list item 2 (a parent)
** list item 3 (a child of list item 2)
** list item 4 (a child of list item 2 as well)
*** list item 5 (a child of list item 4 and a grand-child of list item 2)
* list item 6

Я хотел бы проанализировать это во вложенном списке или какой-либо другой структуре данных, которая делает отношения родитель-потомок между элементами явными (а не в зависимости от их содержимого и относительной позиции). Например, вот список кортежей, содержащих элемент и список его дочерних элементов (и т. Д.):

редактироватьНадеюсь, более правильный пример списка, где каждый элемент в списке является кортежем, содержащим: текст маркера и, если применимо, список дочерних элементов (в той же форме).

    [('list item 1',),
     ('list item 2', [('list item 3',), ('list item 4', [('list item 5',)])]
     ('list item 6',)]

[('list item 1',),
 ('list item 2', [('list item 3',), ('list item 4', [('list item 5',)])]),
 ('list item 6',)]

Я пытался сделать это с простым Python и немного поэкспериментировать с Pyparsing, но я не делаю успехов. У меня осталось два основных вопроса:

Какую стратегию мне нужно использовать, чтобы сделать эту работу? Я знаю, что рекурсия является частью решения, но мне трудно установить связь между этим и, скажем, последовательностью Фибоначчи.Я уверен, что я не первый, кто сделал это, но я не знаю терминологию проблемы, чтобы провести плодотворный поиск дополнительной информации по этой теме. Какие проблемы связаны с этим, чтобы я мог узнать больше о решении подобных проблем в целом?

Ответы на вопрос(1)

Ваш ответ на вопрос