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

如何用Python列表推导式替代循环生成指定序列

解决列表推导式生成目标序列的问题

错误原因分析

你尝试的列表推导式会触发索引越界,因为推导过程中变量j被重新赋值为新生成的列表,而每个元素的计算依赖j[i-1]——此时新列表还在构建中,没有足够的元素供引用,因此报错。

方案一:利用序列的数学规律(最简洁)

观察目标序列[0,2,6,12,20,30,42,56,72,90],可发现每个元素满足公式:第n个元素(从0开始计数)= n(n+1)*。基于此规律,直接用列表推导式生成:

sequence = [n * (n + 1) for n in range(10)]

执行后即可得到目标序列,无需依赖前序元素的累加计算。

方案二:模拟原循环的累积逻辑

如果需要严格遵循原循环的累加逻辑,可以借助itertools.accumulate实现累积计算,再补充初始的0:

import itertools

# 生成原循环中每次累加的2*i值
add_values = (2 * i for i in range(1, 10))
# 计算累积和,拼接初始0得到完整序列
sequence = [0] + list(itertools.accumulate(add_values))

这种方式完全复刻了原循环中j += 2*i的累加过程,最终生成的序列与原循环输出一致。

内容的提问来源于stack exchange,提问作者Raphael Von Eigendorf

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 02:15:58