以递归方式搜索多嵌套列表并返回整数计数:Python

时间:2016-03-03 23:45:09

标签: python recursion

这是一个Python程序。这是我到目前为止所拥有的。程序当前忽略多个嵌套列表,仅计算单个层值。检查列表的方法必须是索引。

def DigitCount(lst):
    if len(lst)==0:
        return 0
    val = DigitCount(lst[1:])
    if len(lst) > 0:
        if type(lst[0]) != list:
            if type(lst[0]).isdigit():
                return 1 + val
        if type(lst[0])==list:
            DigitCount(lst[0])
            return val
    return val

1 个答案:

答案 0 :(得分:1)

您可以使用sum简化逻辑,对列表调用DigitCount(ele)的元素进行递归,或者检查元素是否为int并对所有元素求和结果:

def DigitCount(lst):
    return sum(DigitCount(ele) if isinstance(ele, list) else isinstance(ele, int) 
               for ele in lst)

输出:

In [22]: DigitCount([[1, 2, 3], [1, 2, 3, [4, 5, [3, 4, 3]]]])
Out[22]: 11

isinstance(ele, int)返回0或1,因此每个递归调用返回1或0,因此这是一个对所有值求和的简单情况。