为了账号安全,请及时绑定邮箱和手机立即绑定

Python 列表可变

Python 列表可变

慕桂英4014372 2021-07-26 15:52:20
我正在尝试使用 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 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

arr = []是一个空列表,当您tmp通过以下方式附加到它时:

tmp = [1, 2]
arr.append(tmp)

你把tmparr列表中,从而使您arr = [tmp]可以扩展到arr = [[1,2]]。但这里的巧妙之处在于您[1,2]通过temp变量维护对列表的引用。因此,当您追加时,您将temp追加与arr.

进一步澄清一下,仅仅因为您附加tmparr并不意味着结果列表[[1,2]]都将成为内存中的一个连续块。您将拥有arr列表,而 的第一个元素将arr是指向列表的指针tmp


查看完整回答
反对 回复 2021-08-03
?
MMTTMM

TA贡献1869条经验 获得超4个赞

所有的评论都很棒。


arr.append(tmp)

print arr # [[1,2]]

如您所见,结果不是:


print arr # [1,2]

所以,arr只保存对tmp数组的引用。如果我的猜测是写你正在寻找:


 arr.extend(tmp)

 print arr # [1,2]


查看完整回答
反对 回复 2021-08-03
  • 3 回答
  • 0 关注
  • 144 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信