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

如何用Python列表推导式实现三角数递增列表的逐行输出?

解决方法

要实现原for循环的逐行递增输出,你需要生成每个阶段的前缀列表,而不是仅生成完整的三角数列表。以下是两种用列表推导式实现的方案:

方案一:先生成完整列表,再生成前缀切片打印

# 先生成所有三角数的完整列表
tri_nums = [i*(i+1)//2 for i in range(1, 10)]
# 生成每个长度的前缀列表并逐行打印
for lst in [tri_nums[:k] for k in range(1, 10)]:
    print(lst)

方案二:嵌套列表推导式直接生成所有前缀列表

# 外层循环控制列表长度,内层生成对应长度的三角数列表
for lst in [[j*(j+1)//2 for j in range(1, i+1)] for i in range(1, 10)]:
    print(lst)

原理说明

原for循环的核心是:每添加一个新的三角数,就打印当前的完整列表(即前i个三角数的集合)。上面的方案中:

  • 方案一先一次性生成所有三角数,再通过切片tri_nums[:k]获取前k个元素的列表,遍历k从1到9即可输出所有阶段的列表。
  • 方案二通过嵌套列表推导式,直接为每个i生成前i个三角数的列表,再逐个打印。

两种方案都能输出和原for循环完全一致的结果:

[1]
[1, 3]
[1, 3, 6]
[1, 3, 6, 10]
[1, 3, 6, 10, 15]
[1, 3, 6, 10, 15, 21]
[1, 3, 6, 10, 15, 21, 28]
[1, 3, 6, 10, 15, 21, 28, 36]
[1, 3, 6, 10, 15, 21, 28, 36, 45]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 06:05:03