Skip to main content
 首页 » 编程设计

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

2025年05月04日23lidabo

我觉得我做错了。我在列表的深处递归,就好像它是一棵树一样。这会导致问题,因为它是一个任意列表,可以包含字符串、整数... 这是我的东西

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)