问题描述】输入一个嵌套列表,求其嵌套的层数。例如:[1,2,3,4,5]的嵌套层数为1,[1,[2,3],[4,5]]的嵌套层数为2,[1,[[2,3],4],5]的嵌套层数为3......思想:采用递归的方式,如果是列表,其嵌套层数等于列表每个元素的嵌套层数的最大值+1;如果不是列表,其嵌套层数为0. 可用isinstance函数判断数据类型,isinstance(变量名,类型名),例如: a=[1,2], isinstance(a, list)返回True。注意:测试数据里面可能包含空列表 ,见样例输入 。 【输入形式】一行字符,内容是嵌套的列表 【输出形式】一个整数,为列表的嵌套层数 【样例输入】[1,2,3,4,5] 【样例输出】1 【样例输入】[1,[],[4,5]] 【样例输出】2 【样例输入】[1,[[2,3],4],5] 【样例输出】3
时间: 2023-11-28 11:50:50 浏览: 77
列表的嵌套
可以使用递归的思想解决这个问题,对于每一个列表,先求出它内部所有元素的嵌套层数的最大值,然后再加上1就是该列表的嵌套层数。代码如下:
```python
def get_depth(lst):
if not isinstance(lst, list): # 如果不是列表,嵌套层数为0
return 0
if not lst: # 如果是空列表,嵌套层数为1
return 1
max_depth = max(get_depth(item) for item in lst) # 求出内部所有元素的嵌套层数的最大值
return max_depth + 1 # 加上1就是该列表的嵌套层数
lst = eval(input()) # 将输入的字符串转换为列表
print(get_depth(lst)) # 输出嵌套层数
```
注意,如果直接使用 `input()` 函数获取输入,得到的是一个字符串,需要使用 `eval()` 函数将其转换为列表。但是这种做法有一定的安全风险,因为 `eval()` 函数会执行字符串中的代码,所以如果输入的字符串中包含有恶意代码,可能会造成安全问题。所以在实际开发中,需要根据具体情况选择更加安全的方式来解决这个问题。
阅读全文