python3 中 dict和list 效率比较

2023-11-18

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慢。

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python3 中 dict和list 效率比较 的相关文章

随机推荐

  • OD2022Q2算法题-补种未成活胡杨,输出最多的连续胡杨树数-PYTHON解法

    题目描述 近些年来 我国防沙治沙取得显著成果 某沙漠新种植N棵胡杨 编号1 N 排成一排 一个月后 有M棵胡杨未能成活 现可补种胡杨K棵 请问如何补种 只能补种 不能新种 可以得到最多的连续胡杨树 输入描述 N 总种植数量 1 lt N l
  • ImportError: cannot import name ‘dtensor‘ from ‘tensorflow.compat.v2.experimental‘报错

    一 错误分析 出现这个问题原因在于tensorflow和keras版本不匹配 keras的版本太高了 需要降低到和tensorflow版本一致 二 解决步骤 1 首先查看自己电脑的keras版本 pip show keras 上图中 我的t
  • 图书推荐管理系统Python,基于Django和协同过滤算法等实现

    一 介绍 图书推荐系统 图书管理系统 以Python作为开发语言 基于Django实现 使用协同过滤算法实现对登录用户的图书推荐 二 效果展示 三 演示视频 视频 代码 https www yuque com ziwu yygu3z gq5
  • 基于ESP8266的CMSIS-DAP调试器

    前言 前段时间用8266制作了一个STM32的下载器 可以进行远程下载固件 不过我们用STM32的时候 经常需要进行各种调试 这时候一个调试器就很重要了 于是我想到也许可以做一个无线调试器 本来我打算自己写一个的 不过在github发现居然
  • 1. docker镜像拉取报错:Error response from daemon: Get https://registry-1.docker.io/v2/

    倘若不配置镜像 拉取速度会很慢 因此就会报超时的错误 试了网上的几个镜像 好些都无法使用 其中配置了中科院的和阿里云的 但是只有阿里云的可以使用 并且下载速度很快 大概一两分钟的样子 解决方案 1 打开终端 输入以下命令 sudo vi e
  • centos7中docker启动报错

    root localhost systemctl status docker docker service Docker Application Container Engine Loaded loaded usr lib systemd
  • gtest单元测试框架介绍及简单使用

    Gtest介绍 Gtest是Google的一个开源框架 它主要用于写单元测试 检查真自己的程序是否符合预期行为 可在多个平台上使用 包括Linux Mac OS X Windows Cygwin和Symbian 它提供了丰富的断言 致命和非
  • Laravel blade 模板压缩、加速扩展 renatomarinho/Laravel-page-speed 介绍

    在Laravel框架中 使用renatomarinho laravel page speed 扩展可以将blade模板渲染的html网页进行压缩 优化 可以节省了网络带宽 使我们的网站具有更快的访问速度 扩展包的文档中说明 可以自动优化网站
  • monitor-single-one-docker-host

    参考 https github com vegasbrianc prometheus 在github上有人使用docker compose启动Grafana Prometheus监控单台Host的docker容器 1 下载项目 git cl
  • 根据Explain结果中的key_len判断MySQL联合索引中实际用到的索引字段

    一 数据表staff 现有数据表staff 字符集utf8 并创建有一些字段单独索引及组合索引index age birth salary包含三个字段 sf age tinyint DEFAULT NULL sf birthday date
  • 廉价的全闪存雷电 NAS 折腾笔记:NUC9 操作系统踩坑

    上一篇文章中 分享了关于低成本全闪存 NAS 的个人方案选择 本篇文章 来聊聊硬件相关部分 以及软件的基础配置部分 也聊聊雷电组网的踩坑之旅 写在前面 我使用的设备是 NUC9i5QNX 这台设备的硬件基础规格 可以在 Intel ARK
  • 2023年华为od机试 Java【刻录光盘备份】

    前言 python代码 链接 JavaScript代码 链接 题目 有一系列文件需要通过光盘备份 每张光盘的容量固定为500MB 文件的大小均为整数MB并且不超过500MB 文件不可拆分或分卷备份 需要确定最少需要多少张光盘来完成备份 输入
  • ngnix+lua+js埋点 实现自定义日志采集

    ngnix lua js埋点 实现自定义日志采集 1 收集数据的页面 js埋点 在想要手机数据的页面预先放一段js代码 当用户发生行为时 触发js方法 收集数据 发到后端 http 192 168 4 101 index html 这里的i
  • 在Windons子系统ubuntu中安装ssh(保姆级教程)

    1 什么是ssh SSH Secure Shell 是一种用于远程登录和安全文件传输的网络协议 SSH服务是在计算机上运行的服务程序 它允许用户通过网络安全地远程访问计算机并执行各种操作 以下是关于SSH服务的一些重要信息 远程登录 SSH
  • 流操作

    StreamReader 与 FileStream 的区别用法 有关StreamReader的内容参考http blog sina com cn s blog 796ffec50100te51 html StreamReader 旨在以一种
  • “互联网+”最可行的路径就是“社群+”

    互联网 最可行的路径就是 社群 36氪的朋友们 2016 04 05 17 04 文章摘要 商业正从物以类聚走向人以群分 编者按 本文作者 卢彦 原文来自微信公众号 互联网思维 ID webthinking 36 氪经授权转载 前不久阿里
  • 【C++】通讯录管理系统

    1 系统功能介绍与展示 2 创建项目 3 菜单功能 代码 封装函数显示该界面 如 void showMenu 在main函数中调用封装好的函数 include
  • jmeter批量上传图片, csv文件参数化——详细讲解

    我们在测试的过程中 需要把图片放到请求中 而且还需要不一样的图片 批量修改图片后缀 我们也可以吧文件生成我们想要的后缀 1 首先创建一个文本txt 在文本中输入 ren jpg png 然后把txt的文件 修改 成bat后缀的 进行双击 在
  • 关于Altium Designer PCB元器件的3D封装

    关于Altium Designer PCB元器件的3D封装 虽然Altium Designer为我们提供了丰富的元件封装库资源 但是 在实际的电路设计中电子元器件技术的不断更新换代 有些特定的元器件封装仍需要我们自行制作 另外 有时根据工程
  • python3 中 dict和list 效率比较

    import time def count time func def int time args kwargs start time time time 程序开始时间 res func args kwargs over time time