栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python-附加VS扩展效率

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python-附加VS扩展效率

import timeitdef append2x(foo):    foo.append(1)    foo.append(1)def extend_lst(foo):    foo.extend([1,1])def extend_tup(foo):    foo.extend((1,1))l1 = []l2 = []l3 = []print timeit.timeit('append2x(l1)',setup = 'from __main__ import append2x,l1')print timeit.timeit('extend_lst(l2)',setup = 'from __main__ import extend_lst,l2')print timeit.timeit('extend_tup(l3)',setup = 'from __main__ import extend_tup,l3')

这是一个简单的基准。我的结果(os-X,10.5.8,core2duo,FWIW):

0.520906925201  #append0.602569103241  #extend-list0.357008934021  #extend-tuple

结果与我的linux盒(Ubuntu,x86-64核心i7)的排序相同:

0.307395935059  #append0.319436073303  #extend-list0.238317012787  #extend-tuple

对我来说,这表示

extend
速度比快
append
,但与创建a
list
相比,创建a相对昂贵
tuple


编辑

在下面的注释中指出,由于元组的不变性,解释器可以优化元组的创建(它会创建一次元组并一遍又一遍地重复使用)。如果我们将代码更改为:

def extend_lst(foo):      v = 1    foo.extend([v,v])def extend_tup(foo):    v = 1    foo.extend((v,v))

时间实际上是相同的:

0.297003984451  #append0.344678163528  #extend-list0.292304992676  #extend-tuple

尽管在我进行的所有试用中,它

tuple
仍然始终胜过列表版本,并且几乎没有超出该
append
版本。

有一两件事,我正在远离这一切的是,如果你是循环访问由所有文字的对象,选择

tuple
了一个
list
。如果它不完全由文字组成,那么选择
list
还是都不重要
tuple



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/611902.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号