我试图使用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]]
arr = []
是一个空列表,当您追加时tmp
通过:
tmp = [1, 2]
arr.append(tmp)
你正在把tmp
in the arr
列出,从而给你arr = [tmp]
可以扩展到arr = [[1,2]]
。但这里的巧妙之处在于您保留了对列表的引用,[1,2]
通过temp
多变的。因此,当您附加temp
您正在附加与中相同的列表arr
.
为了进一步澄清,只是因为您要附加tmp
to arr
并不意味着结果列表[[1,2]]
一切都将成为内存中的一个连续块。您将拥有arr
列表和第一个元素arr
将是一个指向列表的指针tmp
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)