我正在处理一个nltk.tree.ParentedTree树,但我认为这个问题比这更普遍。你知道吗
基本上,我有一个任意深度嵌套的列表,我想删除列表的一部分(尽管我不知道该部分嵌套的深度)。我有一个search
函数,用于查找列表中某个项的出现,它返回一个n
整数元组,其中n
是找到的元素的深度。你知道吗
例如,假设我有l = [[['cat', 'dog']], ['fish']]
,当我调用search(l, 'dog')
时,它返回(0, 0, 1)
。这告诉我l[0][0][1] == 'dog'
。如果我提前知道'dog'
发生在(0, 0, 1)
,我可以通过执行del l[0][0][1]
将其从列表中删除。但我不知道提前,所以我需要编程做同样的事情。你知道吗
我可以通过执行以下操作访问列表中的元素'dog'
indices = search(l, 'dog')
for i in indices:
l = l[i]
所以现在l
就是'dog'
。但是,我不知道如何从列表中删除它。我不只是想把它设成None
。你知道吗
尝试:
这真的是一种更为奇特的方式,完全符合@Martijn Pieters在回答中的建议。你知道吗
您可以循环所有引用(最后一个引用除外),然后使用最后一个引用删除该项:
通过使用除最后一个索引外的所有索引,您解析了对被引用项的父级的引用,因此现在可以使用最后一个索引将其删除。你知道吗
相关问题 更多 >
编程相关推荐