我知道这与How do I pick 2 random items from a Python set?
类似说你有迭代s,random.sample(s,n) 可能会完成这项工作。
是运行时间O(| s |)还是O(n)?
# my investigation Code
import random, time
a = range(100)
c = range(25)
b = map(lambda x: (1, x), a)
print a
print b
N = 1000000
def sampleIterable(items, n):
t1 = time.clock()
for _ in xrange(N):
random.sample(items, n)
t2 = time.clock()
print "Time Elapsed = %s sec" % (t2 - t1)
print
print "====== sampling ======"
sampleIterable(a, 5)
sampleIterable(b, 5)
sampleIterable(c, 5)
print "-----------"
sampleIterable(a, 20)
sampleIterable(b, 20)
sampleIterable(c, 20)
print "-----------"
sampleIterable(set(a), 20)
sampleIterable(set(b), 20)
sampleIterable(set(c), 20)
结果: ======抽样====== 经过的时间= 4.014588秒
经过的时间= 3.56045秒
经过的时间= 3.619019秒
经过的时间= 10.594099秒
经过的时间= 10.277008秒
经过的时间= 9.707444秒
经过的时间= 19.782511秒
经过的时间= 19.71995秒
经过的时间= 10.212379秒
猜测结论是: 是的,它是O(n)而不是O(| S |) 和 从列表中采样比设置更快。
一般情况下,如何查看各种python方法的运行时间?