python3 中 dict和list 效率比较

1 篇文章 0 订阅
1 篇文章 0 订阅
import time


def count_time(func):
    def int_time(*args, **kwargs):
        start_time = time.time()  # 程序开始时间
        res = func(*args, **kwargs)
        over_time = time.time()  # 程序结束时间
        total_time = over_time - start_time
        print('程序%s运行用时%s秒' % (func.__name__, total_time))
        return res

    return int_time


index = 0.8
list = []


@count_time
def setList(maxSize):
    for i in range(maxSize):
        list.append(i)


@count_time
def inList(maxSize):
    for i in range(int(maxSize ** index)):
        i in list


@count_time
def searchList(maxSize):
    for i in range(int(maxSize ** index)):
        list[i]


dict = {}


@count_time
def setDict(maxSize):
    for i in range(maxSize):
        i in dict


@count_time
def searchDict(maxSize):
    for i in range(int(maxSize ** index)):
        dict.get(i)


@count_time
def inDict(maxSize):
    for i in range(int(maxSize ** index)):
        i in dict


for i in range(3, 8):
    print('-----------------i:%d,maxSize:%d-----------------' % (i, 100 ** i))
    maxSize = 10 ** i
    setList(maxSize)
    setDict(maxSize)
    inList(maxSize)
    inDict(maxSize)
    searchList(maxSize)
    searchDict(maxSize)

结果如下

D:\Anaconda\python.exe I:/pythonWorkSpace/myBrushRecords/myBrushRecord/exercise/testFile01.py
-----------------i:3,maxSize:1000000-----------------
程序setList运行用时0.0秒
程序setDict运行用时0.0010001659393310547秒
程序inList运行用时0.0秒
程序inDict运行用时0.0秒
程序searchList运行用时0.0秒
程序searchDict运行用时0.0秒
-----------------i:4,maxSize:100000000-----------------
程序setList运行用时0.00099945068359375秒
程序setDict运行用时0.0秒
程序inList运行用时0.023985624313354492秒
程序inDict运行用时0.0秒
程序searchList运行用时0.0秒
程序searchDict运行用时0.00099945068359375秒
-----------------i:5,maxSize:10000000000-----------------
程序setList运行用时0.00799703598022461秒
程序setDict运行用时0.004996538162231445秒
程序inList运行用时0.7625470161437988秒
程序inDict运行用时0.0秒
程序searchList运行用时0.0009996891021728516秒
程序searchDict运行用时0.0009992122650146484秒
-----------------i:6,maxSize:1000000000000-----------------
程序setList运行用时0.11193561553955078秒
程序setDict运行用时0.10194039344787598秒
程序inList运行用时33.38077139854431秒
程序inDict运行用时0.0039975643157958984秒
程序searchList运行用时0.0029985904693603516秒
程序searchDict运行用时0.005997657775878906秒

Process finished with exit code 0

 

总结:如果仅判断值是否在list和dict中,则dict占有绝对优势,但是要获取list和dict中的值,则速度差不多,甚至比list慢。

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值