Как удалить что-то из списка с помощью рекурсии? питон - PullRequest
0 голосов
/ 05 мая 2018

У меня есть это упражнение:

У вас есть древовидный граф, и вам нужно удалить его листья. Поэтому вам нужно удалить пустые списки из списка списков.

Например, это:

[[[[], []], [[], []]], [[], [], []]]

становится таким: [[[], []], []]

Я пытался использовать pop и del, но учитель сказал использовать рекурсию. Также это дает None в качестве вывода. Но я не могу понять, как это сделать. Можете ли вы объяснить это, как или вы можете помочь решить этот вопрос?

  def tree_cut(tree):
  for i in range(len(tree)):
      if tree[i]=="":
          tree.pop(i)
          return tree
          for k in tree[i]=="":
              if k=="":
                  tree.remove(k)
                  return tree

1 Ответ

0 голосов
/ 05 мая 2018

Решение:

def tree_cut(tree):
    return [tree_cut(x) for x in tree if x]

использует список для итерации, фильтрации и преобразования узлов в дереве.

Может быть написано также в терминах map() и filter():

def tree_cut(tree):
    return list(map(tree_cut, filter(None, tree)))

if x part проверяет, не является ли список пустым .

>>> tree = [[[[], []], [[], []]], [[], [], []]]
>>> tree_cut(tree)
[[[], []], []]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...