python使用列表的最佳方案
经常写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列表的资料请关注我们其它相关文章!
相关推荐
-
你需要学会的8个Python列表技巧
原作者:Nik Piepenbreier 翻译&内容补充:费弗里 原文地址:https://towardsdatascience.com/advanced-python-list-techniques-c6195fa699a3 列表(List)是你使用Python过程中接触最为频繁的数据结构,也是功能最为强大的几种数据结构之一.Python列表非常的万能且蕴含着许多隐藏技巧,下面我们就来探索一些常用的列表技巧. 1 列表元素的过滤 1.1 filter()的使用 filter()函数接受2个参数
-
python函数调用,循环,列表复制实例
我就废话不多说了,大家还是直接看代码吧! year=int(raw_input('year:\n')) month=int(raw_input('month:\n')) day=int(raw_input('day:\n')) sum=0 months=(0,31,59,90,120,151,181,212,243,273,304,334) if 0<month<=12: sum=months[month-1] else: print 'data error!' sum+=day leap=0
-
Python列表去重复项的N种方法(实例代码)
说明 Python语言中列表(List)与其他语言的数组(Array)类似,是一种有序的集合数据结构,Python List可支持各种数据类型,长度也可动态调整,与JS中的数组或Java ArrayList很接近.在实际编程中,经常会遇到数组或列表去掉重复项,保持成员唯一性.实现方式有多种,比如新建列表来存储非重复项,或者在原有基础上删除掉重复的项,也可以利用数据结构来达到去重复.具体哪一种方法更好呢?以下约20种方式都可以实现,我们可以通过这些来交流和学习. 方式 ## 1. 新建列表,如果新
-
深入了解python列表(LIST)
Python 内置的四种常用数据结构:列表(list).元组(tuple).字典(dict)以及集合(set). 这四种数据结构一但都可用于保存多个数据项,这对于编程而言是非常重要的,因为程序不仅需要使用单个变量来保存数据,还需要使用多种数据结构来保存大量数据,而列表.元组.字典和集合就可满足保存大量数据的需求. 列表(list)和元组(tuple)比较相似,它们都按顺序保存元素,每个元素都有自己的索引,因此列表和元组都可通过索引访问元素.二者的区别在于元组是不可修改的,但列表是可修改的. 字典
-
Python如何优雅删除字符列表空字符及None元素
这样的一段删除空字符串的代码: def not_empty(s): return s and s.strip() print(list(filter(not_empty, ['A', '', 'B', None,'C', ' ']))) 代码很简洁,效果嘛,可以丢到 Python在线工具|菜鸟教程 跑跑看,很 nice ~ 但是函数 not_empty 的返回值有点复杂,可以仔细分析一下: - 假设字符串a和b作and运算 a and b: - 若两者均为非空,则 a and b = b;
-
Python列表如何更新值
序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内置类型,但最常见的是列表和元组. 序列都可以进行的操作包括索引,切片,加,乘,检查成员. 此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法. list1 = ['physics', 'chemistry', 1997, 2000] list2 = [1, 2, 3, 4, 5 ] list3 = ["a"
-
Python 列表中的修改、添加和删除元素的实现
本文介绍的是列表中的修改.添加和删除元素.第一次写博客,如果本文有什么错误,还请大家评论指正.谢谢! 创建的列表大多数都将是动态的,这就意味着列表创建后,将随着程序的运行删减元素. 修改列表元素 修改元素的的语法与访问列表的语法类似. 假设有一个列表motorcycles,其中第一个元素为'honda',修改第一个元素的值 motorcycles = ['honda','yamaha','suzuki'] print(motorcycles) motorcycles[0] = 'ducati'
-
python使用列表的最佳方案
经常写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)
-
使用 Python ssh 远程登陆服务器的最佳方案
在使用 Python 写一些脚本的时候,在某些情况下,我们需要频繁登陆远程服务去执行一次命令,并返回一些结果. 在 shell 环境中,我们是这样子做的. $ sshpass -p ${passwd} ssh -p ${port} -l ${user} -o StrictHostKeyChecking=no xx.xx.xx.xx "ls -l" 然后你会发现,你的输出有很多你并不需要,但是又不去不掉的一些信息(也许有方法,请留言交流),类似这样 host: xx.xx.xx.xx,
-
python复制列表时[:]和[::]之间有什么区别
前言 new = old[:] Python老鸟都知道以上代码是什么意思.它复制列表old到new.它对于新手来说是种困惑而且应该避免使用这种方法.不幸的是[:]标记法被广泛使用,可能是Python程序员不知道更好的列表复制法吧.然而本文给大家介绍的是关于python复制列表时[:]和[::]之间有什么区别,下面来一起看看吧 我们可以(浅)使用[:]复制列表: l = [1, 2, 3] z1 = l[:] 我们也可以(浅)使用[::]复制它: z2 = [::] 现在z1 == z2将为Tru
-
python中列表的常见操作梳理总结(一)
目录 python中列表的常见操作 列表元组的简单操作 列表/元组的长度 列表/元组之间的累加与乘法 判断列表/元组中是否包含某元素 列表的append()函数 列表的insert()函数 列表的count()函数 列表的remove()函数 列表的reverse()函数 列表的sort()函数 列表的clear()函数 列表的copy()函数 列表的extend()函数 python中列表的常见操作 列表元组的简单操作 前面我们已经学过了关于len()函数.赋值运算符及身份运算符的使用,下面简
-
浅谈python中列表、字符串、字典的常用操作
列表操作如此下: a = ["haha","xixi","baba"] 增:a.append[gg] a.insert[1,gg] 在下标为1的地方,新增 gg 删:a.remove(haha) 删除列表中从左往右,第一个匹配到的 haha del a.[0] 删除下标为0 对应的值 a.pop(0) 括号里不写内容,默认删除最后一个,写了,就删除对应下标的内容 改:a.[0] = "gg" 查:a[0] a.index(&q
-
Python统计列表中的重复项出现的次数的方法
本文实例展示了Python统计列表中的重复项出现的次数的方法,是一个很实用的功能,适合Python初学者学习借鉴.具体方法如下: 对一个列表,比如[1,2,2,2,2,3,3,3,4,4,4,4],现在我们需要统计这个列表里的重复项,并且重复了几次也要统计出来. 方法1: mylist = [1,2,2,2,2,3,3,3,4,4,4,4] myset = set(mylist) #myset是另外一个列表,里面的内容是mylist里面的无重复 项 for item in myset: prin
-
Python去除列表中重复元素的方法
本文实例讲述了Python去除列表中重复元素的方法.分享给大家供大家参考.具体如下: 比较容易记忆的是用内置的set l1 = ['b','c','d','b','c','a','a'] l2 = list(set(l1)) print l2 还有一种据说速度更快的,没测试过两者的速度差别 l1 = ['b','c','d','b','c','a','a'] l2 = {}.fromkeys(l1).keys() print l2 这两种都有个缺点,祛除重复元素后排序变了: ['a', 'c',
-
Python中列表、字典、元组、集合数据结构整理
本文详细归纳整理了Python中列表.字典.元组.集合数据结构.分享给大家供大家参考.具体分析如下: 列表: 复制代码 代码如下: shoplist = ['apple', 'mango', 'carrot', 'banana'] 字典: 复制代码 代码如下: di = {'a':123,'b':'something'} 集合: 复制代码 代码如下: jihe = {'apple','pear','apple'} 元组: 复制代码 代码如下: t = 123,456,'hello' 1.列表 空
-
Python中列表(list)操作方法汇总
本文实例汇总了Python中关于列表的常用操作方法,供大家参考借鉴.具体方法如下: 一.Python创建列表: sample_list = ['a',1,('a','b')] 二.Python 列表操作: 假设有如下列表: sample_list = ['a','b',0,1,3] 1.得到列表中的某一个值: value_start = sample_list[0] end_value = sample_list[-1] 2.删除列表的第一个值: del sample_list[0] 3.在列表
-
python求列表交集的方法汇总
本文实例汇总了python求列表交集的方法.分享给大家供大家参考.具体方法如下: 交集对于给定的两个集合A 和 集合B 的交集是指含有所有既属于 A 又属于 B 的元素,而没有其他元素的集合叫交集了,下面给出几个python求列表交集例子供大家参考. 方法1 遍历b1,如果某个元素同时也存在于b2中,则返回 复制代码 代码如下: b1=[1,2,3] b2=[2,3,4] b3 = [val for val in b1 if val in b2] print b3 运行结果如下 复制代码 代码如
随机推荐
- JSP 多条SQL语句同时执行的方法
- 20款效果非常棒的 jQuery 插件小结分享
- jQuery实现标题有打字效果的焦点图代码
- 详解vue-cli + webpack 多页面实例配置优化方法
- 详解Vue.js基于$.ajax获取数据并与组件的data绑定
- apache Php5配置方法
- Python中字符串的修改及传参详解
- JS控制静态页面传递参数并获取参数应用
- ASP.NET 获取客户端IP方法
- php实现根据url自动生成缩略图的方法
- thinkphp中AJAX返回ajaxReturn()方法分析
- Android布局——Preference自定义layout的方法
- thinkPHP5.0框架独立配置与动态配置方法
- input输入框内容实时监测(附代码)
- jquery实现图片平滑滚动详解
- J2ME 程序开发注意要点
- php mysql索引问题
- vue vuex vue-rouert后台项目——权限路由(适合初学)
- vue 不使用select实现下拉框功能(推荐)
- python 读取视频,处理后,实时计算帧数fps的方法