Ich arbeite derzeit mit einer rekursiven Funktion in Python, und ich habe in eine Wand gerannt. Wie angegeben, besteht das Problem darin, die maximale Tiefe einer beliebig verschachtelten Liste zurückzugeben. HierEin Auffinden der maximalen Tiefe einer beliebig verschachtelten Liste
ist das, was ich bisher:
def depthCount(lst):
'takes an arbitrarily nested list as a parameter and returns the maximum depth to which the list has nested sub-lists.'
var = 0
if len(lst) > 0:
if type(lst[0]) == list:
var += 1
depthCount(lst[1:])
else:
depthCount(lst[1:])
else:
return var
Ich glaube, dass das Problem mit meinem rekursiven Aufruf ist (dies kann offensichtlich sein). Es wird tatsächlich var zurückgeben, wenn die Liste das Ende erreicht hat, aber wenn ich eine nicht leere Liste habe, gehen die Dinge schief. Nichts wird zurückgegeben.
Bin ich falsch schneiden? Sollte ich im rekursiven Call etwas vor dem Slice machen?
Das Problem kann auch mit meinem Basisfall sein.
Warum sollte etwas zurückgegeben werden, wenn es im 'if len (lst)> 0:' Block keine 'return var 'gibt? – Navith
Auch wenn Sie auf 'list' schreiben wollen, damit Sie nicht in Strings, Tupel, Dicts usw. rekurrieren, wollen Sie auch verhindern, dass Sie in Unterklassen von' list' rekurrieren? Wenn nicht, benutze 'isinstance (lst [0], list)'. – abarnert
Können Sie bitte genauer angeben, wie Ihre "verschachtelten Listen" aussehen? Enthalten sie etwas anderes als Listen oder sind es buchstäblich nur Sachen wie '[[[], []], [], [[]]]? –