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