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

如何从列表高效构建金字塔型嵌套列表(List of Lists)?

优化思路与实现方案

核心逻辑:利用数学规律简化迭代

金字塔的第k行(从1开始计数)包含k个元素,前k-1行的总元素数为 1+2+...+(k-1) = k*(k-1)/2。基于这个规律,我们可以直接通过计算切片边界来分割有序列表,替代原代码的手动迭代与异常捕获,让逻辑更清晰、效率更高。

优化实现(迭代版)

sorted_keys = sorted(encoded_message.keys())
pyramid = []
total = len(sorted_keys)
start_idx = 0
row_length = 1

while start_idx + row_length <= total:
    # 直接切片提取当前行的元素
    pyramid.append(sorted_keys[start_idx:start_idx + row_length])
    start_idx += row_length
    row_length += 1

更紧凑的推导式写法

如果偏好简洁代码,可以先通过数学公式计算总行数,再用列表推导式生成结果:

sorted_keys = sorted(encoded_message.keys())
total = len(sorted_keys)
# 解一元二次方程,计算最大完整行数m
max_rows = int((-1 + (1 + 8 * total)**0.5) // 2)
# 按每行的起始/结束索引切片
pyramid = [sorted_keys[k*(k-1)//2 : k*(k+1)//2] for k in range(1, max_rows + 1)]

优化点说明

  • 去掉了原代码中try-except的异常捕获开销,改用列表切片(底层为C实现,执行效率更高)
  • 逻辑完全基于金字塔的数学规律,可读性更强,减少冗余临时变量(如原代码的row、go)
  • 避免了手动逐个元素添加的操作,直接批量提取数据,代码更简洁

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 21:34:59