|  | 
 
| 
【问题描述】
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  
 输入一个嵌套列表nums,再输入一个层数n,求该层的数字元素个数。
 【输入形式】
 
 第一行输入列表,元素是自然数,包括方括号,逗号分隔
 【输出形式】
 
 整数
 【样例输入】
 
 [1,2,[3,4,[5,6],7],8]
 
 3
 
 【样例输出】
 
 2
 【样例说明】
 
 输入样例的嵌套有三个层次,当输入3的时候,就是计算第三层次嵌套列表的数字元素个数。 如果输入的是2,则第2层次嵌套列表中,数字元素的个数是3.
 
 我的代码在测试时有两个数据不通过,但我自己执行的时候是可以的,希望能看到大佬的代码对比然后改进自己的代码
 
你2个贴的代码,和我对题目理解的不一至。不知道是不是我想多了。于是我上网找了下该题的相关资料,如下:
 复制代码data = [1, 2, [3, 4, [5, 6], 7, [5, 6]], 8, [3, 4, [5, 6], 7]]
n = 3
# 该函数是我以为的要达到的
# 来自 https://blog.csdn.net/liurongke/article/details/116305467
def function(lis,lev,rank):
    cnt = 0
    for i in lis:
        if rank != lev and isinstance(i,list):    #如果当前层数不是指定层数,并且该元素为列表,那么我们就进入该列表,然后增加一个层数
            cnt += function(i,lev,rank+1)
        elif rank == lev and isinstance(i,int) or isinstance(i,float):   #如果是当前层数,并且是数字,就加起来
            cnt += 1
    return cnt
print(function(data,n,1))               #函数(列表,指定层数,从第一层开始)
# 该函数也是我以为的要达到的
# 来自 https://www.cnblogs.com/dreamcoding/p/12694572.html
def getSum(items,depth,n):
    if type(items) == int:
        if type(items) == int:
            if depth == n:
                return 1
            else:
                return 0
    else:
        if (type(items) == tuple) or (type(items) == list):
            result = 0
            for i in range(len(items)):
                result += getSum(items[i],depth+1,n)
            return result
        else:
            return 0
result = 0
for i in range(len(data)):
    result = result + getSum(data[i],1,n)
print(result)
# 该函数也是我以为的要达到的 (实现方式比效另类, 效率明显要比递归快)
# 来自 https://tuenity.blog.csdn.net/article/details/102722592
a = '[1, 2, [3, 4, [5, 6], 7, [5, 6]], 8, [3, 4, [5, 6], 7]]'
c = n
b = ''.join(a)
num= 0
sum=0
for i in range(0,len(b)):
    if(b[i]=='['):
        num+=1
    elif(b[i]==']'):
        num-=1
    if (c == num) and (b[i]!='[') and (b[i]!=']' and b[i]!=',' and b[i+1].isdigit()==False):
        sum += 1
print(sum)
# 然后就是你们认为的结果
def level(data:list) -> list:
    res = [len([i for i in data if type(i) == int])]
    for i in data:
        if type(i) == list:
            res += level(i)
    return res
print(level(data)[num - 1])
 | 
 |