Python列表:为什么.sort()比sorted()快得多?

时间:2014-02-08 11:31:28

标签: python sorting

我衡量对1000万条目列表进行排序所需的时间:

import time

a = range(10000000, 0, -1)
b = range(10000000, 0, -1)

start = time.time()
a.sort()
end = time.time()
print end - start

start = time.time()
sorted(b)
end = time.time()
print end - start

我得到的输出:

0.272000074387
0.468999862671

原因可能是因为sorted更通用,但这与this post不一致 差异在大型名单中变得微不足道。是什么导致了巨大的差异?

我在32位Windows 7,Q6600处理器上使用python 2.7.3 32位。

1 个答案:

答案 0 :(得分:6)

sort版本在列表中就地运行,但sorted制作列表的副本。当实际排序如此简单时(Timsort检测到整个列表是一个大的向后运行并反转它),副本的创建可能会对运行时产生重大影响。