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
。