我觉得我做错了。我在列表的深处递归,就好像它是一棵树一样。这会导致问题,因为它是一个任意列表,可以包含字符串、整数... 这是我的东西
def visit_depth(list_, depth):
if depth == 0:
return 1
elif depth >0:
return sum([visit_depth(l, depth - 1) for l in list_])
else:
return 0
请您参考如下方法:
This causes problems because It's an arbitrary list that can have strings, ints
防范他们。
def deep_len(obj, depth=0):
if isinstance(obj, list):
if depth == 0:
return len(obj)
else:
return sum(deep_len(elem, depth - 1) for elem in obj)
else:
return 0
deep_len([1,2,[2,5],[3]], 0)
# => 4 (this list itself has 4 elements)
deep_len([1,2,[2,5],[3]], 1)
# => 3 (going 1 level down there's just 3 elements)
deep_len([1,2,[2,5],[3]], 2)
# => 0 (there is no 2 levels down)
