說我有一個列表:在Python中,如何返回一個任意嵌套元素的索引列表?
>>> nested=[[1, 2], [3, [4]]]
我想獲得,將返回[1,1,0]
如果我正在尋找4
功能。如果指定的元素不在列表中,那麼它將返回一個空列表,[]
。
Nested
可以有任何結構,所以我想某種類型的遞歸函數會是最好的,但是在控制結構的深度和寬度方面遇到困難。
這是不工作的代碼,但沿線的我在想什麼:
def locate(x,element,loc=[0],counter=0):
for c,i in enumerate(x):
if isinstance(i,list):
locate(i,loc+[0],counter+1)
else:
loc[counter]=c
if i==element: return loc
函數調用會是這個樣子:
>>> locate(nested,4)
[1,1,0]
遞歸函數可能不是最好的解決方案,但只是我的嘗試。
您目前的解決方案有什麼問題?除了在遞歸時不回來。並使用默認的可變參數。 –
即返回定位(我,祿+ [0],計數器+ 1)' –
如果有多個匹配? –