A have a real problem (and a headache) with an assignment...
I'm in an introductory programming class, and I have to write a function that, given a list, will return the "maximum" depth it goes to... For example: [1,2,3] will return 1, [1,[2,3]] will return 2...
I've written this piece of code (it's the best I could get T_T)
def flat(l):
count=0
for item in l:
if isinstance(item,list):
count+= flat(item)
return count+1
However, It obviously doens't work like it should, because if there are lists that do not count for the maximum deepness, it still raises the counter...
For example: when I use the function with [1,2,[3,4],5,[6],7] it should return 2, but it returns 3...
Any ideas or help would be greatly appreciated ^^ thanks a lot!! I've been strugling with this for weeks now...
Let's first rephrase your requirements slightly.
Now, this can be translated directly to code:
Breadth-first, without recursion, and it also works with other sequence types:
The same idea, but with much less memory consumption:
easy with recursion
@John's solution is excellent, but to address the empty list cases, like
[]
,[[]]
, you may need to do something like thisdepth = lambda L: isinstance(L, list) and (max(map(depth, L)) + 1) if L else 1
Did it in one line of python :)
enjoy
A short addition to what has been said so it can handle empty lists too: