我觉得我一切都错了。我在列表的深度递归,好像它是一棵树。这会导致问题,因为它是一个任意列表,可以有字符串,整数... 这就是我所拥有的
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
答案 0 :(得分:5)
这会导致问题,因为它是一个任意列表,可以有字符串,整数
警惕他们。
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)