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实现保存网页到本地示例
Mar 16 Python
python计数排序和基数排序算法实例
Apr 25 Python
python常用web框架简单性能测试结果分享(包含django、flask、bottle、tornado)
Aug 25 Python
查看Python安装路径以及安装包路径小技巧
Apr 28 Python
Python抓取淘宝下拉框关键词的方法
Jul 08 Python
解决Python运行文件出现out of memory框的问题
Dec 03 Python
pytorch permute维度转换方法
Dec 14 Python
如何爬取通过ajax加载数据的网站
Aug 15 Python
nginx+uwsgi+django环境搭建的方法步骤
Nov 25 Python
解决pyshp UnicodeDecodeError的问题
Dec 06 Python
Python实现井字棋小游戏
Mar 09 Python
Python实现迪杰斯特拉算法并生成最短路径的示例代码
Dec 01 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
第四节--构造函数和析构函数
2006/11/16 PHP
PHP strtok()函数的优点分析
2010/03/02 PHP
PHP SESSION的增加、删除、修改、查看操作
2015/03/20 PHP
php控制文件下载速度的方法
2015/03/24 PHP
jquery 子窗口操作父窗口的代码
2009/09/21 Javascript
js chrome浏览器判断代码
2010/03/28 Javascript
表格单元格交错着色实现思路及代码
2013/04/01 Javascript
jquery ready(fn)事件使用介绍
2013/08/21 Javascript
常用的JavaScript验证正则表达式汇总
2013/11/26 Javascript
jQuery实现仿腾讯微博滑出效果报告每日天气的方法
2015/05/11 Javascript
浅谈javascript构造函数与实例化对象
2015/06/22 Javascript
Angular.Js的自动化测试详解
2016/12/09 Javascript
react native实现往服务器上传网络图片的实例
2017/08/07 Javascript
Vue的百度地图插件尝试使用
2017/09/06 Javascript
gulp安装以及打包合并的方法教程
2017/11/19 Javascript
javascript中call()、apply()的区别
2019/03/21 Javascript
Vue-input框checkbox强制刷新问题
2019/04/18 Javascript
vue项目中常见问题及解决方案(推荐)
2019/10/21 Javascript
vue3.0中setup使用(两种用法)
2020/12/02 Vue.js
用PyQt进行Python图形界面的程序的开发的入门指引
2015/04/14 Python
Python使用struct处理二进制的实例详解
2017/09/11 Python
Python 多进程和数据传递的理解
2017/10/09 Python
Python将一个Excel拆分为多个Excel
2018/11/07 Python
用Python实现数据的透视表的方法
2018/11/16 Python
Python3enumrate和range对比及示例详解
2019/07/13 Python
解决pycharm下pyuic工具使用的问题
2020/04/08 Python
python程序输出无内容的解决方式
2020/04/09 Python
微软香港官网及网上商店:Microsoft HK
2016/09/01 全球购物
Clarks英国官方网站:全球领军鞋履品牌
2016/11/26 全球购物
德国最大的婴儿用品网上商店:Kidsroom.de(支持中文)
2020/09/02 全球购物
教师演讲稿范文
2014/01/08 职场文书
关于打架的检讨书
2014/01/17 职场文书
国庆节新闻稿
2015/07/17 职场文书
变长双向rnn的正确使用姿势教学
2021/05/31 Python
JS 4个超级实用的小技巧 提升开发效率
2021/10/05 Javascript
SpringBoot2零基础到精通之异常处理与web原生组件注入
2022/03/22 Java/Android