3 回答
TA贡献1946条经验 获得超4个赞
尝试列出range输出:
mylist3 = list(range(100000000))
我将此添加到您的测试中并获得了以下时间:
append: 18.42
all-0: 0.23
list: 2.63 <== The new one
TA贡献1860条经验 获得超9个赞
既然你说你需要速度,我认为这np.arange是最好的方法,它甚至比创建所有0s的列表还要快。这是我机器上的时间:
import timeit
import numpy as np
def m1(n=100000000):
mylist = []
for i in range(n):
mylist.append(i)
return mylist
def m2(n=100000000):
return [0] * n
def m3(n=100000000):
return list(range(n))
def m4(n=100000000):
return np.arange(n)
>>> timeit.timeit(m1,number=1)
17.615584995000972
>>> timeit.timeit(m2,number=1)
0.7669911839911947
>>> timeit.timeit(m3,number=1)
9.909814337006537
>>> timeit.timeit(m4,number=1)
0.5374436590063851
请注意,np.arange()返回一个np.array. 如果您需要将其转换回列表,则会失去速度。最好只使用数组...
def m4(n=100000000):
return np.arange(n).tolist()
>>> timeit.timeit(m4,number=1)
11.485261309993803
添加回答
举报
