从结果来讲性能差别巨大,本质上 2 种方式拿到的都是完全不一样的副本才对。 那么是不是可以认为这跟列表推导一样是一种优化写法?如果这样的话,那么深拷贝的意义在哪呢?是为了极端条件下使用方便么?为什么比起手动递归性能损失那么多?
import time,copy
li = [i for i in range(10000000)]
xr = [i for i in range(10000000)]
li.append(xr)
# 方式 1:浅拷贝
st1 = time.process_time()
temp1 = copy.copy(li)
temp1[-1] = copy.copy(li[-1])
end1 = time.process_time()
# 方式 2:深拷贝
start2 = time.process_time()
temp3 = copy.deepcopy(li)
end2 = time.process_time()
print("方式 1 耗时:%s" % (end1 - st1))
print("方式 2 耗时:%s" % (end2 - start2))
`方式 1 耗时:0.2146999999999999
`方式 2 耗时:12.704364
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.