如何遍历嵌套列表?Python多层嵌套列表扁平化函数实现求助
实现Python任意层级嵌套列表的扁平化函数
你需要的是一个能递归处理嵌套列表的函数,原函数仅手动实现了两层嵌套的遍历,无法处理更深层级的结构,递归是解决这类不确定层级嵌套问题的最优方案。
解决方案代码
def flatten_list(lista): lista_unica = [] # 检查输入是否为列表,非列表返回None if not isinstance(lista, list): return None for item in lista: # 如果当前元素是列表,递归调用自身并扩展结果 if isinstance(item, list): nested_flattened = flatten_list(item) if nested_flattened is not None: lista_unica.extend(nested_flattened) # 非列表元素直接添加 else: lista_unica.append(item) return lista_unica
验证示例
示例1
输入:
lista = [1,2,[3, [4, 5, [6]], 7]] print(flatten_list(lista))
输出:
[1, 2, 3, 4, 5, 6, 7]
示例2
输入:
lista = [1,2,['a','b'],[10]] print(flatten_list(lista))
输出:
[1, 2, 'a', 'b', 10]
逻辑说明
- 递归的核心是:遇到列表元素就重复调用扁平化函数,直到处理到非列表元素,再将其加入结果列表,无论嵌套多少层都能逐层拆解。
- 使用
isinstance替代type判断类型,能兼容继承自list的子类(虽题目未要求,但符合Python类型判断的最佳实践)。 - 通过
extend方法将递归返回的扁平化列表合并到结果中,严格保证元素顺序与原列表一致。
内容的提问来源于stack exchange,提问作者Valentin Ragusa
相关产品推荐
相关产品推荐

