Python 列表可变

我正在尝试使用 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]]


慕桂英4014372
浏览 145回答 3
3回答

哈士奇WWW

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。

MMTTMM

所有的评论都很棒。arr.append(tmp)print arr # [[1,2]]如您所见,结果不是:print arr # [1,2]所以,arr只保存对tmp数组的引用。如果我的猜测是写你正在寻找: arr.extend(tmp) print arr # [1,2]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python