Python二维列表复制方法与运行时间比较(deepcopy真的慢)

5种二维列表复制方案如下:

1.新建列表,逐个append复制原列表的各个元素。

2.使用深复制deepcopy。

3.使用二维列表推导式。

4.使用copy+一维列表推导式。

5.转换为numpy数组再转成列表。

对比各方案运行时间,代码如下:

import time
import copy
import random
import numpy as np

temp = [[random.random() for j in range(100)] for i in range(100)]
t0 = time.clock()
# 方案1:新建列表逐个元素复制
a = []
for i in range(len(temp)):
    a.append([])
    for j in range(len(temp[0])):
        a[i].append(temp[i][j])
t1 = time.clock()
# 方案2:使用深复制deepcopy
b = copy.deepcopy(temp)
t2 = time.clock()
# 方案3:使用列表推导式
c = [[temp[i][j] for j in range(len(temp[0]))] for i in range(len(temp))]
t3 = time.clock()
# 方案4:内层copy,外层列表推导式
d = [copy.copy(temp[i]) for i in range(len(temp))]
t4 = time.clock()
# 方案5:使用numpy
e = np.array(temp).tolist()
t5 = time.clock()
print('1.逐个元素复制时长:%f s'%(t1-t0))
print('2.deepcopy时长:%f s'%(t2-t1))
print('3.列表推导式时长:%f s'%(t3-t2))
print('4.内层copy外层推导时长:%f s'%(t4-t3))
print('5.使用numpy:%f s'%(t5-t4))

对比结果如下:

1.逐个元素复制时长:0.002243 s
2.deepcopy时长:0.007176 s
3.列表推导式时长:0.000769 s
4.内层copy外层推导时长:0.000118 s
5.使用numpy:0.000832 s

可以看出,deepcopy是真的慢,逐个复制也比较慢,使用列表推导式和numpy转换时间差不多,最快的是使用copy+一维列表推导式。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值