我正在尝试使用 Python 术语来解释为什么会发生以下情况,有人可以解释为什么tmp变得[[1,2,3]]不保持为[[1,2]]?arr = []tmp = [1,2]arr.append(tmp)print arr # [[1,2]]tmp.append(3)print arr # [[1,2,3]]
3 回答
![?](http://img1.sycdn.imooc.com/5458692c00014e9b02200220-100-100.jpg)
哈士奇WWW
TA贡献1799条经验 获得超6个赞
arr = []
是一个空列表,当您tmp
通过以下方式附加到它时:
tmp = [1, 2] arr.append(tmp)
你把tmp
在arr
列表中,从而使您arr = [tmp]
可以扩展到arr = [[1,2]]
。但这里的巧妙之处在于您[1,2]
通过temp
变量维护对列表的引用。因此,当您追加时,您将temp
追加与arr
.
进一步澄清一下,仅仅因为您附加tmp
到arr
并不意味着结果列表[[1,2]]
都将成为内存中的一个连续块。您将拥有arr
列表,而 的第一个元素将arr
是指向列表的指针tmp
。
![?](http://img1.sycdn.imooc.com/54584ed2000152a202200220-100-100.jpg)
MMTTMM
TA贡献1869条经验 获得超4个赞
所有的评论都很棒。
arr.append(tmp)
print arr # [[1,2]]
如您所见,结果不是:
print arr # [1,2]
所以,arr只保存对tmp数组的引用。如果我的猜测是写你正在寻找:
arr.extend(tmp)
print arr # [1,2]
添加回答
举报
0/150
提交
取消