Как мне обработать вложенный список?
Предположим, у меня есть маркированный список, как это:
* 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, но я не делаю успехов. У меня осталось два основных вопроса:
Какую стратегию мне нужно использовать, чтобы сделать эту работу? Я знаю, что рекурсия является частью решения, но мне трудно установить связь между этим и, скажем, последовательностью Фибоначчи.Я уверен, что я не первый, кто сделал это, но я не знаю терминологию проблемы, чтобы провести плодотворный поиск дополнительной информации по этой теме. Какие проблемы связаны с этим, чтобы я мог узнать больше о решении подобных проблем в целом?