我最近比较了[]和list()的处理速度,惊讶地发现[]比list()运行list()0。我对{}和dict()进行了相同的测试,结果几乎相同:[]和{}都花费了大约0.128秒/百万次循环,而list()和dict()分别花费了大约0.428秒/百万次循环。
为什么呢?[]和{}(可能还有()和'')会立即传回一些空的库存文字的副本,而它们显式命名的对应物(list()、dict()、tuple()、str())会完全创建一个对象,不管它们是否真的有元素?
我不知道这两种方法有什么不同,但我很想知道。我在文档或SO中找不到答案,搜索空括号比我预期的要困难得多。
我通过调用timeit.timeit("[]")和timeit.timeit("list()")以及timeit.timeit("{}")和timeit.timeit("dict()")分别比较列表和字典来获得计时结果。我正在运行Python 2.7.9。
我最近发现了“为什么if true比if 1慢?”,它比较了if True和if 1的性能,似乎触及了类似的文字与全局场景;也许它也值得考虑。