最佳答案
我想创建一个随机的整数列表,以便进行测试。数字的分布并不重要。唯一在计数的是 时间。我知道生成随机数是一项耗时的工作,但肯定有更好的方法。
以下是我目前的解决方案:
import random
import timeit
# Random lists from [0-999] interval
print [random.randint(0, 1000) for r in xrange(10)] # v1
print [random.choice([i for i in xrange(1000)]) for r in xrange(10)] # v2
# Measurement:
t1 = timeit.Timer('[random.randint(0, 1000) for r in xrange(10000)]', 'import random') # v1
t2 = timeit.Timer('random.sample(range(1000), 10000)', 'import random') # v2
print t1.timeit(1000)/1000
print t2.timeit(1000)/1000
V2的速度比 v1快,但是它不能在如此大的范围内工作。它会产生以下错误:
ValueError: 样本大于总体
在这种规模下,有没有一种快速、有效的解决方案?
安德鲁的: 0.000290962934494
0.0058455221653
KennyTM’s: 0.00219276118279
笨蛋来了,看到了,征服了。