Python两种列表翻转方法的效率比较

Python两种列表翻转方法的效率比较

编写一个Python程序,实现将一堆数字添加到一个初始为空的列表中,然后翻转该列表。

方法一:使用列表的reverse()方法实现:

count=10**5
nums1=[]
for i in range(count):
    nums1.append(i)
nums1.reverse()

        方法二:使用列表的insert()方法实现:

nums2=[]
for i in range(count):
    nums2.insert(0,i)

在本人的计算机上的实验结果对比:

在本人的计算机上方法一所需要的时间是0.04543585712500385s,方法二所需要的时间是1.971661604352202s,方法二所需的时间大概是方法一的40倍。当我们将数据量增加10倍时,方法一所需时间是0.18828791136210368s,方法二所需时间是230.29416846730504s,方法二所需的时间大概是方法一的1220倍。数据量增加十倍,方法一所需时间大概增加五倍,而方法二所需时间大概增加115倍!随着数据规模的扩大,方法一和方法二的效率差距将越来越大。


附:计算Python程序执行时间的三种方法

方法一:
import datetime
starttime = datetime.datetime.now()
#long running
endtime = datetime.datetime.now()
print( (endtime - starttime).seconds)

方法二:
import time
start = time.time()
run_fun()
end = time.time()
print (end-start)
方法三:
import time
start = time.clock()
run_fun()
end = time.clock()
print (end-start)
方法一和方法二都包含了其他程序使用CPU的时间,是程序开始到程序结束的运行时间。
方法三算只计算了程序运行的CPU时间



#Python中翻转同一个列表的两种方法的比较


import time
#方法一:
#reverse()函数实现
starttime1=time.clock()
count=10**6
nums1=[]
for i in range(count):
    nums1.append(i)
nums1.reverse()
endtime1=time.clock()
print(endtime1-starttime1)


#方法二:
#insert()函数实现
starttime2=time.clock()
nums2=[]
for i in range(count):
    nums2.insert(0,i)
endtime2=time.clock()
print(endtime2-starttime2)



你可能感兴趣的:(Python)