python使用列表的最佳方案


Posted in Python onAugust 12, 2020

经常写Python程序的人,列表应该是使用率最高数据结构的了。我们使用列表的过程中,生成列表方式有很多种,哪一种方式性能是最好的呢?可能很多人都没有关心过这个问题。假设要生成一个有1000个元素的列表。采用下面哪一种方式生成最好呢?

1、连接方式

def gen_list1():  
  l = []  
  for i in range(1000):    
    l = l + [i]

2、append方法

def gen_list2():  
  l = []  
  for i in range(1000):    
    l.append(i)

3、列表表达式

def gen_list3():  
  l = [i for i in range(1000)]

4、range函数

def gen_list4():  
  l = list(range(1000))

以上四种方式,都可以实现一个有1000个元素的列表。为了知道哪一种方式耗时最少,我们需要进行测试才可以知晓。测试耗时我们使用Timer方法,下面编写具体测试代码。

from timeit import Timer

t1 = Timer("gen_list1()", "from __main__ import gen_list1")
print("连接方式:", t1.timeit(number=1000), "ms")

t2 = Timer("gen_list2()", "from __main__ import gen_list2")
print("append方法:", t2.timeit(number=1000), "ms")

t3 = Timer("gen_list3()", "from __main__ import gen_list3")
print("列表表达式:", t3.timeit(number=1000), "ms")

t4 = Timer("gen_list4()", "from __main__ import gen_list4")
print("range函数:", t4.timeit(number=1000), "ms")

测试程序编写完成后,可以运行看看结果。

连接方式:  1.2728083460242487 ms
append方法: 0.10177052899962291 ms
列表表达式: 0.03995161800412461 ms
range函数: 0.01611424400471151 ms

通过测试我们可以看出来,使用range函数生成1000个元素列表,耗时是最少的。要想写出高性能Python程序,掌握分析程序性能的方法和熟悉每一种数据结构都是非常重要的技能。

以上就是python使用列表的最佳方案的详细内容,更多关于python列表的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python中绑定与未绑定的类方法用法分析
Apr 29 Python
Python中装饰器高级用法详解
Dec 25 Python
python机器学习之贝叶斯分类
Mar 26 Python
python实现可视化动态CPU性能监控
Jun 21 Python
通过pykafka接收Kafka消息队列的方法
Dec 27 Python
python 字典操作提取key,value的方法
Jun 26 Python
Django项目中使用JWT的实现代码
Nov 04 Python
详解Python list和numpy array的存储和读取方法
Nov 06 Python
基于keras 模型、结构、权重保存的实现
Jan 24 Python
Python startswith()和endswith() 方法原理解析
Apr 28 Python
python性能测试工具locust的使用
Dec 28 Python
python绘制箱型图
Apr 27 Python
Python实现播放和录制声音的功能
Aug 12 #Python
Python实现文件压缩和解压的示例代码
Aug 12 #Python
Python爬取数据并实现可视化代码解析
Aug 12 #Python
Python下载网易云歌单歌曲的示例代码
Aug 12 #Python
Python爬取12306车次信息代码详解
Aug 12 #Python
Python读取xlsx数据生成图标代码实例
Aug 12 #Python
Idea安装python显示无SDK问题解决方案
Aug 12 #Python
You might like
php下使用iconv需要注意的问题
2010/11/20 PHP
PHPExcel读取Excel文件的实现代码
2011/12/06 PHP
Laravel 5框架学习之模型、控制器、视图基础流程
2015/04/08 PHP
PHP递归获取目录内所有文件的实现方法
2016/11/01 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
laravel中的一些简单实用功能
2018/11/03 PHP
Laravel框架Request、Response及Session操作示例
2019/05/06 PHP
详解laravel passport OAuth2.0的4种模式
2019/11/04 PHP
js css样式操作代码(批量操作)
2009/10/09 Javascript
js数字输入框(包括最大值最小值限制和四舍五入)
2009/11/24 Javascript
两个数组去重的JS代码
2013/12/04 Javascript
jquery如何把数组变为字符串传到服务端并处理
2014/04/30 Javascript
javascript中return,return true,return false三者的用法及区别
2015/11/17 Javascript
JavaScript事件代理和委托详解
2016/04/08 Javascript
Angularjs 自定义服务的三种方式(推荐)
2016/08/02 Javascript
在 Angular2 中实现自定义校验指令(确认密码)的方法
2017/01/23 Javascript
微信小程序实现的日期午别医生排班表功能示例
2019/01/09 Javascript
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
2020/02/11 Javascript
vue 动态生成拓扑图的示例
2021/01/03 Vue.js
[02:52]2017DOTA2国际邀请赛中国区预选赛晋级之路
2017/07/03 DOTA
[01:06:12]VP vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python+selenium实现登录账户后自动点击的示例
2017/12/22 Python
基于Django框架利用Ajax实现点赞功能实例代码
2018/08/19 Python
python解析json串与正则匹配对比方法
2018/12/20 Python
django中嵌套的try-except实例
2020/05/21 Python
Python利用Faiss库实现ANN近邻搜索的方法详解
2020/08/03 Python
python实现快速文件格式批量转换的方法
2020/10/16 Python
css3新增颜色表示方式分享
2014/04/15 HTML / CSS
Html5页面在微信端的分享的实现方法
2018/08/30 HTML / CSS
突破canvas语法限制 让他支持链式语法
2012/12/24 HTML / CSS
销售总监岗位职责
2014/01/04 职场文书
项目建议书格式
2014/03/12 职场文书
学生会竞选演讲稿学习部
2014/08/25 职场文书
公司离职证明标准格式
2014/11/18 职场文书
围城读书笔记
2015/06/26 职场文书
2016入党积极分子党课学习心得体会
2015/10/09 职场文书