ylhhh 发表于 2022-3-6 15:56:38

计算嵌套列表某一层次的元素数量

【问题描述】

输入一个嵌套列表,再输入层数,求该层的元素个数。如果求第二层次的元素个数,但是第二层次还有第三层次嵌套,则嵌套列表算一个元素。

【输入形式】

第一行输入嵌套列表,包含方括号,逗号分隔,每个元素是整数

第二行输入需要计算的层次,整数,大于0
【输出形式】

整数,计算所得的个数
【样例输入】

,7],8]

2

【样例输出】

4
【样例说明】

在第二层次 有3,4,, 7 等4个元素

傻眼貓咪 发表于 2022-3-6 16:02:43

arr = , 7], 8]

def func(arr, res, level = 1):
    if res != level:
      return func(arr, res, level + 1)
    else:
      return len(arr)

print(func(arr, 2))

isdkz 发表于 2022-3-6 16:17:42

本帖最后由 isdkz 于 2022-3-6 16:19 编辑

def func(arr, level = 1):
      res = 0
      if level == 1:
            res += len(arr)
      else:
            for each in arr:
                if type(each) == list:
                  res += func(each, level - 1)
      return res

arr = ,7],8]

print(func(arr, 2))

ylhhh 发表于 2022-3-6 16:29:32

傻眼貓咪 发表于 2022-3-6 16:02


大佬,我没有很看得懂

ylhhh 发表于 2022-3-6 16:32:44

def func(nums,n):
    if n == 1:
      return len(nums)
    if n > 1:
      for i in nums:
            if type(i) is list:
                n = n - 1
                return func(i,n)

nums = eval(input())
n = int(input())
print(func(nums,n))

ylhhh 发表于 2022-3-6 16:33:16

ylhhh 发表于 2022-3-6 16:32


这是我自己写的一个程序

isdkz 发表于 2022-3-6 16:33:17

ylhhh 发表于 2022-3-6 16:29
大佬,我没有很看得懂

你可以用多个不同的列表来测试一下

傻眼貓咪 发表于 2022-3-6 16:34:31

ylhhh 发表于 2022-3-6 16:29
大佬,我没有很看得懂

抱歉,刚才写太快了,有错,已修改:arr = , 7], 8]

def func(arr, res, level = 1):
    if res != level:
      for each in arr:
            if type(each) != int:
                return func(each, res, level + 1)
    else:
      return len(arr)

print(func(arr, 2))

ylhhh 发表于 2022-3-6 16:37:09

傻眼貓咪 发表于 2022-3-6 16:34
抱歉,刚才写太快了,有错,已修改:

谢谢大佬

isdkz 发表于 2022-3-6 16:38:42

傻眼貓咪 发表于 2022-3-6 16:34
抱歉,刚才写太快了,有错,已修改:

你这个还是有点问题:比如你用 , , 7, 5, 8], ] 这个列表来测试得到的是结果 1,

你的只得出了第一个嵌套列表的长度

isdkz 发表于 2022-3-6 16:46:23

ylhhh 发表于 2022-3-6 16:32


你的代码跟 8 楼的是一个问题, 像 , , ] 这样的列表里面有三个嵌套列表,

你没有统计所有第二层列表的,就只得到了第一个 二层列表 的长度。

傻眼貓咪 发表于 2022-3-6 16:46:43

isdkz 发表于 2022-3-6 16:38
你这个还是有点问题:比如你用 , , 7, 5, 8], ] 这个列表来测试得到的是结果 1, ...

我也是有想过这点,但是如果真的是这样,就不符合逻辑了,比如:
, , 7, 5, 8], ]

测试第 2 层,那么需要测试 还是, 7, 5, 8] 还是 呢?
该不会全部加起来吧?

isdkz 发表于 2022-3-6 16:48:25

傻眼貓咪 发表于 2022-3-6 16:46
我也是有想过这点,但是如果真的是这样,就不符合逻辑了,比如:
, , 7, 5, 8], [ ...

那几个不是都属于第二层列表吗?

傻眼貓咪 发表于 2022-3-6 16:50:59

isdkz 发表于 2022-3-6 16:48
那几个不是都属于第二层列表吗?

也是,可能我的思路有错吧,哈哈,我是把它当成每层只有一个列表元素
页: [1]
查看完整版本: 计算嵌套列表某一层次的元素数量