如何用while循环替代多层for循环实现嵌套列表扁平化?
扁平化嵌套列表的while循环实现
实现思路
通过维护一个待处理元素队列,用while循环迭代处理:每次从队列取出一个元素,若为列表则将其内部元素全部加入队列;若为非列表元素则直接存入结果列表,直到队列清空。这种方式无需编写多层for循环,能适配任意深度的嵌套结构。
代码实现
def flatten_nested_list(nested_list): result = [] # 初始化待处理队列,放入原始嵌套列表的所有元素 queue = list(nested_list) while queue: current_item = queue.pop(0) # 采用队列先进先出逻辑,保证元素顺序与原列表一致 if isinstance(current_item, list): # 若当前元素是列表,将其内部元素扩展到队列末尾 queue.extend(current_item) else: # 非列表元素直接加入结果列表 result.append(current_item) return result # 测试示例 int_list = [[[1]],2,[[[[3]]]]] list_of_lists = flatten_nested_list(int_list) print(list_of_lists) # 输出: [1,2,3]
补充说明
- 用
isinstance(current_item, list)判断元素类型,兼容不同深度的嵌套场景 - 队列的处理逻辑保证了输出元素顺序与原始嵌套列表中的出现顺序一致
- 封装成函数后可直接复用,处理各类嵌套列表的扁平化需求
内容的提问来源于stack exchange,提问作者Felipe Osorio
相关产品推荐
相关产品推荐

