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

Python实现帕斯卡三角出错,求问题排查与修正方案

问题分析与解决

你的核心问题出在列表赋值的引用机制上:temp = lst并不是创建一个新的列表副本,而是让temp和lst指向内存中同一个列表对象。所以当你在循环里修改lst的元素时,temp的内容会同步改变,导致计算下一行元素时,用的是已经被修改过的当前列表值,而非上一行的原始值。

比如第三次循环(生成第三行)时,原本应该基于上一行[1,2,1]计算,但因为temp和lst是同一个对象,当你修改lst[1]为1+2=3后,temp[1]也变成了3,接下来计算lst[2]时,用的是temp[1]+temp[2] = 3+1=4,这就出现了错误的[1,3,4,1]。

修正方案

给temp赋值时,要创建lst的副本,而不是引用。Python里有几种常用的列表复制方式:

  • temp = lst.copy()
  • temp = lst[:]
  • temp = list(lst)

同时要注意调整赋值顺序,确保每次循环都基于上一行的原始值计算。修正后的代码如下:

length = 4

lst = [1]

for i in range(length):
    temp = lst.copy()  # 创建上一行的副本
    for j in range(i):
        lst[j+1] = temp[j] + temp[j+1]
    lst.append(1)
    print(lst)

执行结果

运行修正后的代码,就能得到预期的帕斯卡三角:

[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 08:35:35