MST
星途 面试题库

面试题:Python列表长度计算在复杂数据结构中的应用

假设有一个复杂的嵌套列表结构,如下:complex_list = [1, [2, 3, [4, 5]], (6, 7), [8, {'sub_key': [9, 10]}]]。要求编写一个函数,能够精确计算出这个复杂列表结构中所有叶子节点(即不再包含列表或字典等可迭代对象的元素)的数量。请说明实现思路并给出完整代码。
44.9万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

实现思路

  1. 使用递归方法来遍历复杂列表结构。
  2. 对于列表中的每个元素,判断其类型:
    • 如果是列表或元组,递归调用函数来处理这个子列表或子元组。
    • 如果是字典,递归处理字典的值。
    • 如果既不是列表、元组也不是字典,说明是叶子节点,数量加1。

完整代码

def count_leaf_nodes(lst):
    count = 0
    for item in lst:
        if isinstance(item, (list, tuple)):
            count += count_leaf_nodes(item)
        elif isinstance(item, dict):
            for value in item.values():
                if isinstance(value, (list, tuple)):
                    count += count_leaf_nodes(value)
                else:
                    count += 1
        else:
            count += 1
    return count


complex_list = [1, [2, 3, [4, 5]], (6, 7), [8, {'sub_key': [9, 10]}]]
print(count_leaf_nodes(complex_list))