python list 的+、+=和extend操作
据说后者在list很大的时候性能稍好。
于是测试了一把:
import time def time_cost(func):
def _time_cost(*args,**kw):
t1=time.time()
func(*args,**kw)
t2=time.time()
return t2-t1
return _time_cost @time_cost
def test_add(list_a,huge_list_b):
return list_a+huge_list_b
@time_cost
def test_extend(list_a,huge_list_b):
return list_a.extend(huge_list_b) if __name__=='__main__':
print '-----big list test-------------'
a=[1]*1000
b=['a']*(10**8)
print 'add cost:%s seconds'%test_add(a,b)
print 'extend cost:%s seconds'%test_extend(a,b) print '-----small list test-------------'
a=[1]*1000
b=['a']*(10**2)
print 'add cost:%s seconds'%test_add(a,b)
print 'extend cost:%s seconds'%test_extend(a,b)
我机器是win7,64bit,6G 内存,i3 cpu,结果如下:
-----big list test-------------
add cost:1.30500006676 seconds
extend cost:0.591000080109 seconds
-----small list test-------------
add cost:0.0 seconds
extend cost:0.0 seconds
在b为10^8长度的时候,extend所耗的时间几乎只有+操作的一半。
在1000长度的级别,相差不大。几乎相同。
+=等同于extend,如下:
import time def time_cost(func):
def _time_cost(*args,**kw):
t1=time.time()
func(*args,**kw)
t2=time.time()
return t2-t1
return _time_cost @time_cost
def test_add(list_a,huge_list_b):
list_a+=huge_list_b
return list_a
@time_cost
def test_extend(list_a,huge_list_b):
return list_a.extend(huge_list_b) if __name__=='__main__':
print '-----big list test-------------'
a=[1]*1000
b=['a']*(10**8)
a2=[1]*1000
print '+= cost:%s seconds'%test_add(a,b)
print 'extend cost:%s seconds'%test_extend(a2,b)
输出:
-----big list test-------------
+= cost:0.506999969482 seconds
extend cost:0.510999917984 seconds
python list 的+、+=和extend操作的更多相关文章
- (转)python 列表与元组的操作简介
python 列表与元组的操作简介 原文:https://www.cnblogs.com/QG-whz/p/4782809.html 阅读目录 列表 list函数 列表的基本操作 列表方法 元组 tu ...
- python 文件及文件夹操作
python 文件.目录操作(新增.移动.删除等) python 文件夹与文件操作 mport string, os, sys dir = '/var' print '----------- no s ...
- 使用Python对Excel进行读写操作
学习Python的过程中,我们会遇到Excel的读写问题.这时,我们可以使用xlwt模块将数据写入Excel表格中,使用xlrd模块从Excel中读取数据.下面我们介绍如何实现使用Python对Exc ...
- Python/Django(CBV/FBV/ORM操作)
Python/Django(CBV/FBV/ORM操作) CBV:url对应的类(模式) ##====================================CBV操作============ ...
- Python_基于Python同Linux进行交互式操作实现通过堡垒机访问目标机
基于Python同Linux进行交互式操作实现通过堡垒机访问目标机 by:授客 QQ:1033553122 欢迎加入全国软件测试交流群:7156436 实现功能 1 测试环境 1 代码实践 2 注 ...
- python入门学习:3.操作列表
python入门学习:3.操作列表 关键点:列表 3.1 遍历整个列表3.2 创建数值列表3.3 使用列表3.4 元组 3.1 遍历整个列表 循环这种概念很重要,因为它是计算机自动完成重复工作的常 ...
- 在Python程序中的进程操作,multiprocess.Process模块
在python程序中的进程操作 之前我们已经了解了很多进程相关的理论知识,了解进程是什么应该不再困难了,刚刚我们已经了解了,运行中的程序就是一个进程.所有的进程都是通过它的父进程来创建的.因此,运行起 ...
- 【转】python 历险记(四)— python 中常用的 json 操作
[转]python 历险记(四)— python 中常用的 json 操作 目录 引言 基础知识 什么是 JSON? JSON 的语法 JSON 对象有哪些特点? JSON 数组有哪些特点? 什么是编 ...
- python 关于文件夹的操作
在python中,文件夹的操作主要是利用os模块来实现的, 其中关于文件夹的方法为:os.lister() , os.path.join() , os.path.isdir() # path 表示文 ...
- Python之旅Day3 文件操作 函数(递归|匿名|嵌套|高阶)函数式编程 内置方法
知识回顾 常见五大数据类型分类小结:数字.字符串.列表.元组.字典 按存值个数区分:容器类型(列表.字典.元组) 标量原子(数字.字符串) 按是否可变区分:可变(列表.字典) 不可变(数字.字符串.元 ...
随机推荐
- DB服务器中的参数优化
1.swappiness 禁止系统使用swap空间,配置/etc/sysctl.conf中的vm.swappiness=0 2.Scheduler调度 Scheduler调度,指的是磁盘的IO调度算法 ...
- DllMaps
http://www.mono-project.com/docs/advanced/pinvoke/dllmap/ http://www.mono-project.com/docs/advanced/ ...
- HTML5 web Form表单验证实例
HTML5 web Form 的开发实例! index.html <!DOCTYPE html> <html> <head> <meta charset=&q ...
- <meta>标签元素的属性理解
meta是用来在HTML文档中模拟HTTP协议的响应头报文.meta 标签用于网页的<head>与</head>中,meta 标签的用处很多.meta 的属性有两种:name和 ...
- jquery 匿名函数的区别
下面两个定义函数的方法是等价的 var test = function(val){alert(val);} function test(val){alert(val);} 都是定义了一个test()方 ...
- Yii2 rules验证规则
Rules验证规则: required : 必须值验证属性||CRequiredValidator 的别名, 确保了特性不为空. [['字段名1','字段名2'],required] //字段 ...
- vim配色方案设置(更换vim配色方案)
vim配色后,我的 设定底色为黑色,字体为绿色,然后将文件夹设为洋红,默认的注释换为淡黄:其实有一种简单的方法,就是设定为系统配置好的配色方案:转载文章如下: ---------------- ( ...
- 我的linux桌面
经过几次尝试安装linux系统之后,终于把自己的系统安装成了linux系统. wangkongming@ThinkPad-T410 ~ $ lsb_release -a No LSB modules ...
- python基础教程1
python作为一种编程语言,诞生于1990年左右,算是一门比较年轻的语言(也算是90后吧),它是面向对象的,但不同于JAVA\C#那么严格要求一切皆对象,更接近于C++,是面向过程和面向对象的结合: ...
- Mongoose简单的连表查询
原文摘自我的前端博客,欢迎大家来访问 http://www.hacke2.cn 像我这篇文章所说的基于Node.js + jade + Mongoose 模仿gokk.tv,当时停止开发是因为我深深的 ...