列表的所有子列表中给定深度的项目数

时间:2017-12-08 09:01:19

标签: python list recursion

我觉得我一切都错了。我在列表的深度递归,好像它是一棵树。这会导致问题,因为它是一个任意列表,可以有字符串,整数... 这就是我所拥有的

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

1 个答案:

答案 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)
相关问题