数据结构之列表  timeit

timeit模块

timeit模块可以用来测试一小段python代码的执行速度

class timeit.Timer(stmt=‘pass’,setup=‘pass’,timer=<timer function>)

Timer是测量小段代码执行速度的类

stmt参数是要测试的代码语句(statment)

setup参数是运行代码时需要的设置

timer参数是一个定时器函数,与平台有关

timeit.Timer.timeit(number=1000000)

Timer类中测试语句执行速度的对象方法。number参数是测试代码时的测试次数,默认为1000000次。方法返回执行代码的平均耗时,一个float类型的秒数

python列表类型不同操作的时间效率

python生成列表的常见形式有一下四种:

  • 两个列表的相加
  • 列表生成器
  • 可迭代对象转化为列表
  • 对空列表进行元素追加

对于以上四种形式,自定义四种函数实现

from timeit import Timer#  对空列表进行元素追加
def test1():li = []for i in range(10000):li.append(i)def test2():li = []for i in range(10000):li = li + [i]def test3():li = [i for i in range(10000)]def test4():li = list(range(10000))time1 = Timer('test1()', 'from __main__ import test1')
print('append追加:', time1.timeit(1000))time2 = Timer('test2()', 'from __main__ import test2')
print('求和:', time2.timeit(1000))timer3 = Timer('test3()', 'from __main__ import test3')
print("列表生成器:", timer3.timeit(1000))timer4 = Timer('test4()', 'from __main__ import test4')
print("可迭代对象转化:", timer4.timeit(1000))

运行结果:

元素追加(append和insert)

from timeit import Timerdef test5():li = []for i in range(10000):li.append(i)def test6():li = []for i in range(10000):li.insert(0, i)  # 头部插入time5 = Timer('test5()', 'from __main__ import test5')
print('append:', time5.timeit(1000))time6 = Timer('test6()', 'from __main__ import test6')
print('insert:', time6.timeit(1000))

运行结果:

结果来看尾部添加的效率明显优于头部添加,这与python的列表数据存储方式决定的
同理,pop删除元素方式,从队头删除的效率要远远低于从队尾删除元素的效率。

数据结构之列表 timeit相关推荐

  1. 深入剖析Redis系列(七) - Redis数据结构之列表

    前言 列表(list)类型是用来存储多个 有序 的 字符串.在 Redis 中,可以对列表的 两端 进行 插入(push)和 弹出(pop)操作,还可以获取 指定范围 的 元素列表.获取 指定索引下标 ...

  2. redis 底层数据结构 压缩列表 ziplist

    压缩列表是列表键和哈希键的底层实现之一.当一个列表键只包含少量列表项,并且每个列表项要么就是小整数,要么就是长度比较短的字符串,redis就会使用压缩列表来做列表键的底层实现 当一个哈希键只包含少量键 ...

  3. Python学习—基础数据结构之列表

    基本数据结构之列表 列表list是一种有序的集合,可以随时添加和删除其中的元素.与c.java中的数组有相似之处,但是c.java中的数组必须存放同一类型的元素,而在python的列表中,存放的元素可 ...

  4. python包含多个元组的元组_Python数据结构(元组,列表,字典)

    Python内置了 几种数据结构,元组,列表 字典 1.元组 元组可以由不同的元素组成,所有元素通过圆括号(  )包含起来,并通过逗号","隔开.如变量名 = (元素1,元素2,. ...

  5. Redis数据结构之列表

    本文来说下Redis数据结构之列表 文章目录 概述 Redis关于列表的命令 相关命令 添加命令 从右边插入元素 从左边插入元素 向某个元素前或者后插入元素 查询命令 获取指定范围内的元素列表 获取列 ...

  6. python的内建数据结构包括_Python中3种内建数据结构:列表、元组和字典

    Python中有3种内建的数据结构:列表.元组和字典.参考简明Python教程 1. 列表 list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个 序列 的项目.假想你有一个购物列表,上面 ...

  7. 【Python基础学习】基本数据结构:列表、元组、栈、字典、集合与队列

    [Python基础学习]基本数据结构:列表.元组.栈.字典.集合与队列 Python的基本数据结构中,包含了列表.元组等一系列数组式数据结构,但各个结构各有不同.因此单独列出来,分析相同与不同 列表( ...

  8. python列表元素替换的数据结构_列表是Python中的一种数据结构。列表元素无序。...

    [综合练习]It has made the headlines that the president's wife threatened her husbands with public exposu ...

  9. 数据结构 -- 散列表

    散列表作为一种能够提供高效插入,查找,删除 以及遍历的数据结构,被应用在很多不同的存储组件之中. 就像rocksdb中的hashskiplist,redis的有序集合,java的 LinkedHash ...

最新文章

  1. 《ArcGIS Runtime SDK for Android开发笔记》——(13)、图层扩展方式加载Google地图...
  2. Patreon禁用加密货币?不好意思,基于BCH的Bitreon即将上线
  3. 攻防世界php2_攻防世界-php2
  4. SAP PR 转 PO
  5. XP下安装SQL2000企业版本(转载)
  6. 什么叫内部银团_MOS管和IGBT管有什么区别?
  7. mysql5.7安装
  8. 做人不能太心软,这三件事上,越狠心就越受益
  9. 李炎恢php学习视频教程下载
  10. 机器人运动学轨迹跟踪控制(Matlab实现)
  11. SDL2中文API(整理)
  12. php 去除多余空行,php如何去除空行
  13. 《SAP HANA平台应用开发》—第2章2.1节熟悉HANA开发环境
  14. Android开发,登录注册界面中如何添加视频背景,亲测可用
  15. 计算机学什么怎么学会的,学电脑先学什么 新手怎么学电脑
  16. 计算机考研院校所,计算机考研院校全国七大地区考研名校推荐
  17. OSPF高级配置——学习OSPF路由协议的高级应用
  18. BIM模型文件下载——某三层办公楼建筑Revit模型
  19. C语言面试考点之一(常见关键字)
  20. 多进制计算器 java

热门文章

  1. 必读!53个Python经典面试题详解
  2. 无需训练RNN或生成模型,我写了一个AI来讲故事
  3. 提高建模效率,改变手工作坊式生产,AutoML的技术研究与应用进展如何了?
  4. 国内首个深度学习工程师认证标准发布
  5. 1000万个“AI名师”:用机器算法“解剖”应试教育 | AI聚变
  6. Nginx 从安装到高可用
  7. 我真不想学 happens - before 了!
  8. 阿里巴巴为什么不建议直接使用 Async 注解?
  9. 如何凭本事搞砸公司的重大项目?
  10. Spring Boot 中引入 MyBatisPlus 的常规流程