我是python的新手
我知道有点c ++,使用数组。 c ++中的数组并不是那么慢
列表会减慢它吗?我不确定是否可以使用元组。
import random
list1=[]
n=1000000
for i in range(n):
list1.append(random.randint(1,6))
x1=list1.count(1)
x2=list1.count(2)
x3=list1.count(3)
x4=list1.count(4)
x5=list1.count(5)
x6=list1.count(6)
xp1=(100*x1)/n
xp2=(100*x2)/n
xp3=(100*x3)/n
xp4=(100*x4)/n
xp5=(100*x5)/n
xp6=(100*x6)/n
print("The number 1 was found %d - %.2f percent" %(x1,xp1))
print("The number 2 was found %d - %.2f percent" %(x2,xp2))
print("The number 3 was found %d - %.2f percent" %(x3,xp3))
print("The number 4 was found %d - %.2f percent" %(x4,xp4))
print("The number 5 was found %d - %.2f percent" %(x5,xp5))
print("The number 6 was found %d - %.2f percent" %(x6,xp6))
答案 0 :(得分:3)
运行random.randint(1, 6)
一百万次是很慢的,它与你的列表没什么关系:
In [18]: %timeit for i in xrange(1000000): random.randint(1, 6)
1 loops, best of 3: 1.33 s per loop
如果你放弃random.randint()
并切换到1 + int(random.random() * 6)
并使用列表理解,你可以变得更快:
In [111]: %timeit for i in xrange(1000000): 1 + int(random.random() * 7)
1 loops, best of 3: 300 ms per loop
最简单的速度改进是使用numpy
:
In [20]: %timeit numpy.random.randint(1, 7, size=1000000)
100 loops, best of 3: 16.3 ms per loop
答案 1 :(得分:0)
不是主导运行时间的列表,而是对random.randint
的调用。如果您将list1.append(random.randint(1,6))
替换为list1.append(1)
,则速度会快10倍。
此外,列表理解应该比使用for
的{{1}}循环略快,因此您可以尝试
append