Я пытаюсь уменьшить файл данных, который представлен в структуре node-child. Формат данных представлена в следующем виде:Разбор дерева классов python и применение грамматики
({[GeoNode А, GeoNode В, GeoNode С], GeoNode D}, {GeoNode Е, GeoNode Р}, GeoNode G)
Где GeoNode является Python объект. Я пытаюсь применить две операции в некоторой схеме, которая пройдет по дереву. Первый преобразует все GeoNodes в текущем «уровне» в сетки. Второй объединит сетки вместе, в конце оставит меня с одной сеткой.
Вот как выглядят шаги в приведенном выше примере.
- ({[Сетка А, сетка B, сетка С], GeoNode D}, {GeoNode Е, GeoNode Р}, GeoNode G)
- ({Mesh ABC, GeoNode D}, {GeoNode E, GeoNode F}, GeoNode G)
- ({Mesh ABC, сетки D}, {GeoNode E, GeoNode F}, GeoNode G)
- (сетка ABCD, {GeoNode Е, GeoNode Р}, GeoNode G)
- (Mesh ABCD, {Mesh E, Mesh F}, GeoNode G)
- (Mesh ABCD, Mesh EF, GeoNode G)
- (сетка ABCD, сетка EF, сетки G)
- сетка АБВГДЕЖ
я в настоящее время представляет собой структуру данных, как вложенные списки питона, содержащих GeoNodes. Я могу пересечь дерево в глубину и напечатать структуру. Мне непонятно, что делать, когда я решил, что я нахожусь в [Mesh A, Mesh B, Mesh C]. Я могу легко сделать Mesh ABC, но что тогда? Как я могу обеспечить, чтобы это соответствовало GeoNode D и распространялось вверх.
Это похоже на попытку оценить ((1 + 1) + 2 + (3 + 5)), но также преобразует каждый int в float. Однако для моего случая я имею дело с этими классами, а не с плавающей точкой и ints. Существуют ли существующие способы сделать это в Python или в независимых от языка примерах?
Поздний отклик, но этот подход был полезен и как я решил проблему. – saboot