数据结构之列表 timeit
数据结构之列表 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相关推荐
- 深入剖析Redis系列(七) - Redis数据结构之列表
前言 列表(list)类型是用来存储多个 有序 的 字符串.在 Redis 中,可以对列表的 两端 进行 插入(push)和 弹出(pop)操作,还可以获取 指定范围 的 元素列表.获取 指定索引下标 ...
- redis 底层数据结构 压缩列表 ziplist
压缩列表是列表键和哈希键的底层实现之一.当一个列表键只包含少量列表项,并且每个列表项要么就是小整数,要么就是长度比较短的字符串,redis就会使用压缩列表来做列表键的底层实现 当一个哈希键只包含少量键 ...
- Python学习—基础数据结构之列表
基本数据结构之列表 列表list是一种有序的集合,可以随时添加和删除其中的元素.与c.java中的数组有相似之处,但是c.java中的数组必须存放同一类型的元素,而在python的列表中,存放的元素可 ...
- python包含多个元组的元组_Python数据结构(元组,列表,字典)
Python内置了 几种数据结构,元组,列表 字典 1.元组 元组可以由不同的元素组成,所有元素通过圆括号( )包含起来,并通过逗号","隔开.如变量名 = (元素1,元素2,. ...
- Redis数据结构之列表
本文来说下Redis数据结构之列表 文章目录 概述 Redis关于列表的命令 相关命令 添加命令 从右边插入元素 从左边插入元素 向某个元素前或者后插入元素 查询命令 获取指定范围内的元素列表 获取列 ...
- python的内建数据结构包括_Python中3种内建数据结构:列表、元组和字典
Python中有3种内建的数据结构:列表.元组和字典.参考简明Python教程 1. 列表 list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个 序列 的项目.假想你有一个购物列表,上面 ...
- 【Python基础学习】基本数据结构:列表、元组、栈、字典、集合与队列
[Python基础学习]基本数据结构:列表.元组.栈.字典.集合与队列 Python的基本数据结构中,包含了列表.元组等一系列数组式数据结构,但各个结构各有不同.因此单独列出来,分析相同与不同 列表( ...
- python列表元素替换的数据结构_列表是Python中的一种数据结构。列表元素无序。...
[综合练习]It has made the headlines that the president's wife threatened her husbands with public exposu ...
- 数据结构 -- 散列表
散列表作为一种能够提供高效插入,查找,删除 以及遍历的数据结构,被应用在很多不同的存储组件之中. 就像rocksdb中的hashskiplist,redis的有序集合,java的 LinkedHash ...
最新文章
- 《ArcGIS Runtime SDK for Android开发笔记》——(13)、图层扩展方式加载Google地图...
- Patreon禁用加密货币?不好意思,基于BCH的Bitreon即将上线
- 攻防世界php2_攻防世界-php2
- SAP PR 转 PO
- XP下安装SQL2000企业版本(转载)
- 什么叫内部银团_MOS管和IGBT管有什么区别?
- mysql5.7安装
- 做人不能太心软,这三件事上,越狠心就越受益
- 李炎恢php学习视频教程下载
- 机器人运动学轨迹跟踪控制(Matlab实现)
- SDL2中文API(整理)
- php 去除多余空行,php如何去除空行
- 《SAP HANA平台应用开发》—第2章2.1节熟悉HANA开发环境
- Android开发,登录注册界面中如何添加视频背景,亲测可用
- 计算机学什么怎么学会的,学电脑先学什么 新手怎么学电脑
- 计算机考研院校所,计算机考研院校全国七大地区考研名校推荐
- OSPF高级配置——学习OSPF路由协议的高级应用
- BIM模型文件下载——某三层办公楼建筑Revit模型
- C语言面试考点之一(常见关键字)
- 多进制计算器 java