相关疑难解决方法(0)

为什么[]比list()更快?

我最近比较了处理速度[]和,list()并且惊讶地发现它的[]运行速度比它三倍list().我跑了相同的测试与{}dict(),结果几乎相同:[]{}两个花了大约0.128sec /百万次,而list()dict()大约花费每个0.428sec /万次.

为什么是这样?不要[]{}(可能()'',太)立即传回文字的一些空股票的份,而其明确命名同行(list(),dict(),tuple(),str())完全去创建一个对象,他们是否真的有元素?

我不知道这两种方法有何不同,但我很想知道.我无法在文档中或在SO上找到答案,搜索空括号结果比我预期的问题更多.

我拨打了我的时序结果timeit.timeit("[]")timeit.timeit("list()"),和timeit.timeit("{}")timeit.timeit("dict()"),分别比较列表和字典.我正在运行Python 2.7.9.

我最近发现的" 为什么是,如果真慢于如果为1? "来比较的性能if Trueif 1,似乎触及了类似的文字,对全局的情况; 也许值得考虑一下.

python performance list instantiation literals

679
推荐指数
5
解决办法
7万
查看次数

为什么"if not someobj:"比Python中的"if someobj == None:"更好?

我见过几个像这样的代码示例:

if not someobj:
    #do something
Run Code Online (Sandbox Code Playgroud)

但我想知道为什么不这样做:

if someobj == None:
    #do something
Run Code Online (Sandbox Code Playgroud)

有什么区别吗?一个人比另一个人有优势吗?

python

120
推荐指数
4
解决办法
8万
查看次数

为什么在Python 3中将True和False更改为关键字

在Python 2中,我们可以重新分配TrueFalse(但不包括None),但所有这三个(True,False,和None)被认为是内置变量.然而,在Py3k所有三个分别更改为关键字按该文档.

根据我自己的推测,我只能猜测这是为了防止像这样True, False = False, True恶作剧来自旧的恶作剧.但是,在Python 2.7.5中,也许在之前,None = 3重新分配的语句None引发了SyntaxError: cannot assign to None.

在语义上,我不相信True,False并且None是关键词,因为它们最后是语义文字,这就是Java所做的.我检查了PEP 0(索引),我找不到PEP解释它们被改变的原因.

是否有性能优势或其他原因使它们成为关键字而不是文字或特殊None包装它们就像在python2中?

python keyword

39
推荐指数
2
解决办法
6981
查看次数

标签 统计

python ×3

instantiation ×1

keyword ×1

list ×1

literals ×1

performance ×1