Вернуть измененное дерево с добавленными в каждый узел скобками - PullRequest
0 голосов
/ 07 июля 2019

У меня есть функция, которая проходит через каждый узел дерева, и я пытаюсь создать модифицированное дерево с добавленными в каждый узел скобками.

Поскольку кортежи неизменны, я знаю, что не могу выбратьузел за индексом и добавьте скобки таким образом, и поэтому я пытался подумать, как я могу восстановить дерево обратно в его первоначальное состояние с помощью скобок вокруг каждого узла.

def add_brackets(node):
  parent, children = node
  for child in children:
    add_brackets(child)

для,

("hello", (("a", ()), ("b", (("cde", ()), ("fg", ())))))

Я хочу вернуться,

('[hello]', (('[a]', ()), ('[b]', (('[cde]', ()), ('[fg]', ())))))

как я могу это сделать?

1 Ответ

2 голосов
/ 07 июля 2019

да, кортежи неизменны, вам нужно создавать новые и возвращать их.

попробуйте это:

def add_brackets(node):
    parent, children = node
    new_parent = "[{}]".format(parent)
    new_children = tuple(add_brackets(child) for child in children)
    return (new_parent, new_children)


root = ("hello", (("a", ()), ("b", (("cde", ()), ("fg", ())))))
root = add_brackets(root)
print(root)

Выход:

('[hello]', (('[a]', ()), ('[b]', (('[cde]', ()), ('[fg]', ())))))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...