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根据路径导入模块的方法
Sep 30 Python
python查询sqlite数据表的方法
May 08 Python
Python常用小技巧总结
Jun 01 Python
python获取一组汉字拼音首字母的方法
Jul 01 Python
实例讲解Python中SocketServer模块处理网络请求的用法
Jun 28 Python
Python实现pdf文档转txt的方法示例
Jan 19 Python
python实现得到当前登录用户信息的方法
Jun 21 Python
Python 使用threading+Queue实现线程池示例
Dec 21 Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
Feb 26 Python
python3中datetime库,time库以及pandas中的时间函数区别与详解
Apr 16 Python
如何基于python实现年会抽奖工具
Oct 20 Python
python process模块的使用简介
May 14 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
解决MySQL中文输出变成问号的问题
2008/06/05 PHP
php 短链接算法收集与分析
2011/12/30 PHP
YII Framework框架教程之国际化实现方法
2016/03/14 PHP
yii gridview实现时间段筛选功能
2017/08/15 PHP
九种js弹出对话框的方法总结
2013/03/12 Javascript
jQuery下的动画处理总结
2013/10/10 Javascript
详解在Vue中通过自定义指令获取dom元素
2017/03/04 Javascript
解决Extjs下拉框不显示的问题
2017/06/21 Javascript
微信小程使用swiper组件实现图片轮播切换显示功能【附源码下载】
2017/12/12 Javascript
vue 取出v-for循环中的index值实例
2019/11/09 Javascript
js实现提交前对列表数据的增删改查
2020/01/16 Javascript
详解js创建对象的几种方式和对象方法
2021/03/01 Javascript
[00:36]DOTA2上海特级锦标赛 LGD战队宣传片
2016/03/04 DOTA
python解析模块(ConfigParser)使用方法
2013/12/10 Python
简单了解OpenCV是个什么东西
2017/11/10 Python
Django1.9 加载通过ImageField上传的图片方法
2018/05/25 Python
python pandas 如何替换某列的一个值
2018/06/09 Python
python检测空间储存剩余大小和指定文件夹内存占用的实例
2018/06/11 Python
如何使用python把ppt转换成pdf
2019/06/29 Python
python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算
2019/07/18 Python
PYTHON绘制雷达图代码实例
2019/10/15 Python
opencv-python 读取图像并转换颜色空间实例
2019/12/09 Python
tensorflow实现将ckpt转pb文件的方法
2020/04/22 Python
Python实现邮件发送的详细设置方法(遇到问题)
2021/01/18 Python
大学生新闻专业个人自我评价
2013/11/12 职场文书
学习党课思想汇报
2013/12/29 职场文书
触摸春天教学反思
2014/02/03 职场文书
运动会800米加油稿
2014/02/22 职场文书
教师自我鉴定范文
2014/03/20 职场文书
主题教育活动总结
2014/05/05 职场文书
殡葬服务心得体会
2014/09/11 职场文书
单位在职证明书
2014/09/11 职场文书
开会通知短信大全
2015/04/20 职场文书
幼儿园六一儿童节开幕词
2016/03/04 职场文书
mysql使用instr达到in(字符串)的效果
2022/04/03 MySQL
nginx 配置指令之location使用详解
2022/05/25 Servers