计算嵌套列表某一层次的元素数量
【问题描述】输入一个嵌套列表,再输入层数,求该层的元素个数。如果求第二层次的元素个数,但是第二层次还有第三层次嵌套,则嵌套列表算一个元素。
【输入形式】
第一行输入嵌套列表,包含方括号,逗号分隔,每个元素是整数
第二行输入需要计算的层次,整数,大于0
【输出形式】
整数,计算所得的个数
【样例输入】
,7],8]
2
【样例输出】
4
【样例说明】
在第二层次 有3,4,, 7 等4个元素 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: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)) 傻眼貓咪 发表于 2022-3-6 16:02
大佬,我没有很看得懂 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:32
这是我自己写的一个程序 ylhhh 发表于 2022-3-6 16:29
大佬,我没有很看得懂
你可以用多个不同的列表来测试一下 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)) 傻眼貓咪 发表于 2022-3-6 16:34
抱歉,刚才写太快了,有错,已修改:
谢谢大佬 傻眼貓咪 发表于 2022-3-6 16:34
抱歉,刚才写太快了,有错,已修改:
你这个还是有点问题:比如你用 , , 7, 5, 8], ] 这个列表来测试得到的是结果 1,
你的只得出了第一个嵌套列表的长度 ylhhh 发表于 2022-3-6 16:32
你的代码跟 8 楼的是一个问题, 像 , , ] 这样的列表里面有三个嵌套列表,
你没有统计所有第二层列表的,就只得到了第一个 二层列表 的长度。 isdkz 发表于 2022-3-6 16:38
你这个还是有点问题:比如你用 , , 7, 5, 8], ] 这个列表来测试得到的是结果 1, ...
我也是有想过这点,但是如果真的是这样,就不符合逻辑了,比如:
, , 7, 5, 8], ]
测试第 2 层,那么需要测试 还是, 7, 5, 8] 还是 呢?
该不会全部加起来吧? 傻眼貓咪 发表于 2022-3-6 16:46
我也是有想过这点,但是如果真的是这样,就不符合逻辑了,比如:
, , 7, 5, 8], [ ...
那几个不是都属于第二层列表吗? isdkz 发表于 2022-3-6 16:48
那几个不是都属于第二层列表吗?
也是,可能我的思路有错吧,哈哈,我是把它当成每层只有一个列表元素
页:
[1]