Python .append和.insert函数是否编辑插入列表中的对象?

Python .append和.insert函数是否编辑插入列表中的对象?,python,python-3.x,Python,Python 3.x,当我运行上述代码时,我得到 oldrow = [1] for i in range(5): finaloutputlist.append(oldrow) print(oldrow) oldrow.append(0) oldrow.insert(0,0) j = i + 1 newrow = [] for i in range(len(oldrow) -1): #print(oldrow[i]) newrow.append(oldrow[

当我运行上述代码时,我得到

oldrow = [1]

for i in range(5): 
  finaloutputlist.append(oldrow)
  print(oldrow)
  
  oldrow.append(0)
  oldrow.insert(0,0)
  
  j = i + 1
  newrow = []
  for i in range(len(oldrow) -1):
    #print(oldrow[i])
    newrow.append(oldrow[i] + oldrow [i+1])
  
  oldrow = newrow

print(finaloutputlist)


在这里,当我打印“oldrow”时,我得到的数组正好是我想要附加到finaloutputlist中的数组列表中的数组。但是,附加相同的oldrow会使我的最终输出行保持净额。出于某种原因,我在更新最终输出列表后添加的0似乎正在进入列表。

感谢@jasonharper

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


工作非常出色,无需额外导入。

finaloutputlist。追加(oldrow)
不追加
oldrow
的副本,而是追加
oldrow
本身-对该列表的任何后续修改都可以在
finaloutplist
中看到。这可以通过
finaloutputlist.append(oldrow.copy())
finaloutputlist.append(oldrow[:])
导入副本来修复;finaloutputlist.append(copy.deepcopy(oldrow))
取决于您的数据结构。但由于您的列表只包含
int
,标准副本就足够了
finaloutputlist.append(oldrow.copy())