如何使用递归从列表中删除某些内容?python

如何使用递归从列表中删除某些内容?python,python,tree,Python,Tree,我有以下练习: 您有一个树形图作为输入,需要删除它的叶子。因此,您需要从列表列表中删除空列表 例如: [[]、[]、[]、[]、[]、[]、[]、[]、[]] 变成这样: [[],[],[] 我试着用pop和del,但老师说用递归。此外,它还不提供任何输出。但我不知道该怎么做。你能解释一下如何解决这个问题吗 def tree_cut(tree): for i in range(len(tree)): if tree[i]=="": tree.pop(i)

我有以下练习:

您有一个树形图作为输入,需要删除它的叶子。因此,您需要从列表列表中删除空列表

例如:

[[]、[]、[]、[]、[]、[]、[]、[]、[]]

变成这样: [[],[],[]

我试着用pop和del,但老师说用递归。此外,它还不提供任何输出。但我不知道该怎么做。你能解释一下如何解决这个问题吗

  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
解决方案:

def tree_cut(tree):
    return [tree_cut(x) for x in tree if x]
使用来迭代、筛选和转换树中的节点

也可写为和:

如果x零件为

def remove_leaves(tree):返回[如果x为x,则为树中的x移除_leaves(x)]
def tree_cut(tree):
    return list(map(tree_cut, filter(None, tree)))
>>> tree = [[[[], []], [[], []]], [[], [], []]]
>>> tree_cut(tree)
[[[], []], []]