为什么random.shuffle比使用sorted函数慢得多?

5 人关注

在使用pythons的 random.shuffle 函数时,我注意到使用 sorted(l, key=lambda _: random.random()) 明显比 random.shuffle(l) 快。据我所知,这两种方式都会产生完全随机的列表,那么为什么 shuffle 会花费这么多时间呢?

以下是使用 timeit 模块的时间。

from timeit import timeit
setup = 'import random\nl = list(range(1000))'
# 5.542 seconds
print(timeit('random.shuffle(l)', setup=setup, number=10000))