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代码检查工具pylint 让你的python更规范
Sep 05 Python
Python 执行字符串表达式函数(eval exec execfile)
Aug 11 Python
解析Python编程中的包结构
Oct 25 Python
常见python正则用法的简单实例
Jun 21 Python
python 中文件输入输出及os模块对文件系统的操作方法
Aug 27 Python
Python 使用Numpy对矩阵进行转置的方法
Jan 28 Python
Python 学习教程之networkx
Apr 15 Python
Python 用turtle实现用正方形画圆的例子
Nov 21 Python
python中def是做什么的
Jun 10 Python
浅谈numpy中函数resize与reshape,ravel与flatten的区别
Jun 18 Python
pytorch SENet实现案例
Jun 24 Python
Python项目打包成二进制的方法
Dec 30 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
轻松修复Discuz!数据库
2008/05/03 PHP
php防止SQL注入详解及防范
2013/11/12 PHP
PHP加密解密实例分析
2015/12/25 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
2017/08/25 PHP
详解no input file specified 三种解决方法
2019/11/29 PHP
js验证表单大全
2006/11/25 Javascript
一个javascript图片阅览组件
2010/11/09 Javascript
node.js中的socket.io入门实例
2014/04/26 Javascript
jQuery实现可编辑的表格实例讲解(2)
2015/09/17 Javascript
js基础知识(公有方法、私有方法、特权方法)
2015/11/06 Javascript
JavaScript使用DeviceOne开发实战(四)仿优酷视频应用
2015/12/02 Javascript
原生javascript实现图片无缝滚动效果
2016/02/12 Javascript
基于BootStrap的图片轮播效果展示实例代码
2016/05/23 Javascript
vue如何在自定义组件中使用v-model
2018/05/14 Javascript
微信小程序上传图片功能(附后端代码)
2020/06/19 Javascript
JS实现区分中英文并统计字符个数的方法示例
2018/06/09 Javascript
详解使用mpvue开发github小程序总结
2018/07/25 Javascript
关于小程序优化的一些建议(小结)
2020/12/10 Javascript
[40:17]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第一场
2018/04/06 DOTA
[47:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
[49:35]LGD vs OG 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
python 设置文件编码格式的实现方法
2017/12/21 Python
Python + selenium自动化环境搭建的完整步骤
2018/05/19 Python
解决Ubuntu pip 安装 mysql-python包出错的问题
2018/06/11 Python
Python合并多个Excel数据的方法
2018/07/16 Python
Python实现朴素贝叶斯的学习与分类过程解析
2019/08/24 Python
python 读取数据库并绘图的实例
2019/12/03 Python
Python字符串查找基本操作代码案例
2020/10/27 Python
HTML5 progress和meter控件_动力节点Java学院整理
2017/07/06 HTML / CSS
英国和爱尔兰最大的地毯零售商:Kukoon
2018/12/17 全球购物
SQL Server提供的3种恢复模型都是什么? 有什么区别?
2012/05/13 面试题
交警失职检讨书
2015/01/26 职场文书
学习保证书怎么写
2015/02/26 职场文书
详解MySQL中的pid与socket
2021/06/15 MySQL
Python echarts实现数据可视化实例详解
2022/03/03 Python
Python自动操作神器PyAutoGUI的使用教程
2022/06/16 Python