从结果来讲性能差别巨大,本质上 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