背景
在python中,避免不了经常使用 list 类型的变量,list 变量的复制也是经常遇到的需求,那么如何高效的复制一个 list呢?
代码
下面代码给出了 4 种不同的list复现方法,观察其代码效率:
# -*- coding:UTF-8 -*-
# region 引入 调试模块
from src.DebugInfo.DebugInfo import *
# endregion
if __name__ == '__main__':
@秒表
def 循环append(列表: list):
新表 = []
for 元素 in 列表:
新表.append(元素)
return 新表
@秒表
def copy新表(列表: list):
新表 = copy(列表)
return 新表
@秒表
def deepcopy新表(列表: list):
新表 = deepcopy(列表)
return 新表
@秒表
def 切片复制(列表: list):
新表 = 列表[:]
return 新表
测试表 = [项 for 项 in range(100000)]
循环append(测试表)
copy新表(测试表)
deepcopy新表(测试表)
切片复制(测试表)
吃代码为每一个list复制方法加上了 秒表 装饰器,下面是代码的运行结果:
我们可以看到,采用 deepCopy方法的复制用时是最长的:24ms,采用 copy 和 切片方法的复制用时为300us左右,性能相当;采用循环append方法的复制用时为2.75ms,性能折中。
结论
很显示,我们在实际使用中,应该优先考虑 copy 或者 切片的方法来复制列表,以提高程序的运行性能。