关于浅拷贝的一个小问题。

2018-08-22 11:50:40 +08:00
 danzzzz
有一个列表 a = [1,[2,3]]
b = list(a)
通过以上方式完成浅拷贝之后,为什么列表 b 的 b[0]不指向列表 a 的 a[0]呢,如果说是因为整形是不可变对象因此而导致的结果的话。修改一下 a 列表。
a = [1,[2,3],(4,5)]
b = list(a)
我发现当我再添加一个不可变对象元组的时候,b[2]指向了 a[2]指向的(4,5),我看到这里的时候一下子就懵了。
小的非常想要得到解答,如果有大哥可以帮忙解答的话,真的非常感激。
1428 次点击
所在节点    Python
2 条回复
dongdawang
2018-08-22 14:23:25 +08:00
指向呀
>>>c = [1, [2, 2]]
>>>d = list(c)
>>>id(c), id(d)
(76898120, 77072456)
>>>id(c[0]), id(d[0]), id(c[1]), id(d[1])
(1470780192, 1470780192, 77045704, 77045704)
danzzzz
2018-08-22 22:19:38 +08:00
@dongdawang 我在 pythontutor 上执行的时候,是没有指向的。这下真的晕了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/482119

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX