Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 递归列表计数_Python_List_Recursion_Count - Fatal编程技术网

Python 递归列表计数

Python 递归列表计数,python,list,recursion,count,Python,List,Recursion,Count,我有一个学校作业,我需要计算f.e.中的列表数量。此列表: ['a'、['house'、[2]、[3]、[[2]]、[b'] 如果不使用全局变量,我就无法思考如何递归地执行它。如果您能给我任何帮助,我将不胜感激 我试着这样做: def zoznam_prvkov(zoznam): z = [] for i in range(len(zoznam)): if isinstance(zoznam[i], list) == False: z.a

我有一个学校作业,我需要计算f.e.中的列表数量。此列表:

['a'、['house'、[2]、[3]、[[2]]、[b']
如果不使用全局变量,我就无法思考如何递归地执行它。如果您能给我任何帮助,我将不胜感激

我试着这样做:

def zoznam_prvkov(zoznam):
    z = []
    for i in range(len(zoznam)):
        if isinstance(zoznam[i], list) == False:
            z.append(zoznam[i])
        else:
            zoznam_prvkov(zoznam[i])
    return z

但是它只返回[1,2,3,6,8]

如果项目不是列表,则返回
0
,否则将其计为列表并汇总所有项目的计数:

def count_列表(x):
如果不存在(x,列表):
返回0
返回1+总和(x中项目的计数列表(项目))

您可以使用Python中的递归函数来实现这一点,它基本上是在函数本身中调用函数的过程

def count(x: list):
    if isinstance(x, list):
        return sum(count(item) for item in x) + 1
    else:
        return 0

lst = ['a', ['house', [2], 3], [], [[[2]]], 'b']

print(count(lst)) # 7

提示,制作一个函数,返回列表中的列表数…请从中重复和。“演示如何解决此编码问题”不是堆栈溢出问题。我们希望您做出诚实的尝试,然后就您的算法或技术提出具体问题。。这表明需要的集合对于堆栈溢出来说过于广泛。建议您先搜索。我可以帮你。