You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中根据数值大小实现数组嵌套?含规则与示例

数组嵌套转换实现方案

需求说明

需要将数组按照以下规则进行嵌套转换:

  • 当前数值大于前一个时,嵌套至更深层级
  • 当前数值与前一个相等时,处于同一层级

示例:输入数组 [3,4,5,5,5,4],转换后结果为 [3,[4,[5,5,5],4]]

实现代码

def nest_list(lst):
    stack = []
    for num in lst:
        if not stack or num > stack[-1][0]:
            stack.append([num])
        elif num == stack[-1][0]:
            stack[-1].append(num)
        else:
            temp = stack.pop()
            while stack and num <= stack[-1][0]:
                temp = [stack.pop()[0], temp]
            stack.append([num, temp])
    while len(stack) > 1:
        temp = stack.pop()
        stack[-1].append(temp)
    return stack[0]

代码逻辑解释

  1. 栈(stack)的作用:跟踪当前嵌套层级的头部元素及对应层级结构
  2. 遍历处理每个数字:
    • 若栈为空,或当前数字大于栈顶列表的第一个元素(当前层级的头部值),则新建包含当前数字的列表加入栈,开启新嵌套层级
    • 若当前数字等于栈顶列表的第一个元素,直接追加到栈顶列表中,保持同一层级
    • 若当前数字小于栈顶列表的第一个元素,弹出栈顶元素作为临时结构,循环弹出栈中头部值大于等于当前数字的元素,将它们与临时结构合并成嵌套形式,直到找到头部值小于当前数字的栈元素,最后将当前数字与合并后的临时结构组成新列表加入栈
  3. 最终合并处理:遍历结束后,若栈中还有多个元素,依次弹出并合并到前一个元素中,最终栈中仅剩的元素即为目标嵌套数组

内容的提问来源于stack exchange,提问作者mbayne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 08:17:10