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。