列表结构大小函数,难用cod

2024-04-26 12:19:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要编写一个函数(size)来获取列表结构并接收其大小。大小是列表结构中成对括号的数目和整数的数目。 例如:size([[[14],[23,[14]]])=8(5对括号,3个整数)

我写了一个代码,但我找不到一种方法,cnt不会在每次调用递归时赋值为零。 这是我的密码:

def flatten(lst):
    if type(lst)==int:
        return [lst]
    elif lst==[]:
        return []
    else:
        return sum(([x] if not isinstance(x, list) else flatten(x) for x in lst),[])

def size(lst):
    cnt=0
    if lst== []:
        return 1
    if type(lst)== int:
        return 1
    b= str(lst)
    ind= b.find('[')
    while ind!=-1:
        cnt+=1
        lst=lst[ind+1:]
        return cnt+ size(lst)
    return cnt+ len(flatten(lst))

Tags: 列表sizereturnifdeftype整数结构