用递归函数求列表的嵌套层数
时间: 2024-03-16 19:46:24 浏览: 32
可以使用递归函数来求列表的嵌套层数。具体思路是,如果一个列表为空,那么它的嵌套层数为 1;否则,它的嵌套层数应该是其中元素的嵌套层数的最大值再加 1。
以下是 Python 代码实现:
```
def nested_depth(lst):
if not isinstance(lst, list): # 非列表类型的元素,嵌套层数为 0
return 0
elif not lst: # 空列表,嵌套层数为 1
return 1
else: # 非空列表,嵌套层数为最大嵌套层数加 1
return max(nested_depth(item) for item in lst) + 1
```
在上述代码中,`isinstance()` 函数用于判断一个对象是否为列表类型;`not lst` 判断列表是否为空。`max()` 函数用于求出列表中元素的最大值。
以下是一些示例:
```
print(nested_depth(3)) # 输出 0
print(nested_depth([])) # 输出 1
print(nested_depth([1, [2, 3], [4, [5, 6], 7]])) # 输出 3
```
希望能解答你的问题。
相关问题
python 递归函数列表嵌套
可以使用递归函数来处理列表嵌套的问题,例如:
```python
def flatten(lst):
result = []
for i in lst:
if isinstance(i, list):
result.extend(flatten(i))
else:
result.append(i)
return result
lst = [1, 2, [3, 4, [5, 6], 7], 8, [9]]
print(flatten(lst)) # [1, 2, 3, 4, 5, 6, 7, 8, 9]
```
在这个例子中,我们定义了一个名为“flatten”的递归函数,它接受一个列表作为参数,并返回一个扁平化的列表。对于给定的列表中的每个元素,我们检查它是否是一个列表。如果是,我们递归调用“flatten”函数,并将其返回的结果添加到结果列表中。否则,我们将元素本身添加到结果列表中。最后,我们返回结果列表。
在这个例子中,我们使用了“isinstance”函数来检查元素是否是一个列表。如果是,我们递归调用“flatten”函数。如果不是,我们将元素本身添加到结果列表中。
利用递归函数计算嵌套列表元素之和
好的,可以的。可以通过递归函数来计算嵌套列表的元素之和,代码如下:
```python
def nested_list_sum(nested_list):
"""
计算嵌套列表的元素之和
"""
total = 0
for item in nested_list:
if isinstance(item, list):
total += nested_list_sum(item)
else:
total += item
return total
```
这个函数会遍历列表中的每一个元素,如果发现某个元素是列表,那么就递归调用这个函数来计算这个列表中的元素之和;如果这个元素不是列表,那么就把它加到总和中。最后返回总和即可。