首页 > 解决方案 > 在python列表中追加函数vs逗号追加

问题描述

在python中,我们可以以两种不同的方式附加到列表中,我想知道哪一种更快-

一个是简单的附加 -array.append(i)

另一种方式 -array+=i,

为了检查他们的表现,我使用了这段代码 -

from datetime import datetime

arr = []
st = datetime.now()
for i in range(10**7):
    arr.append(i)

end = datetime.now()

print("TOTAL TIME FOR APPEND :",(end-st).microseconds)

new_arr = []
st = datetime.now()
for i in range(10**7):
    new_arr+=i,

end = datetime.now()

print("TOTAL TIME FOR COMMA :",(end-st).microseconds)

但每次结果都不一样——

追加总时间:523877

逗号的总时间:58660

=================== 重启:C:/Users/lenovo/Desktop/esehi.py ================= =

追加总时间:564250

逗号的总时间:918581

=================== 重启:C:/Users/lenovo/Desktop/esehi.py ================= =

追加总时间:732322

逗号的总时间:896294

=================== 重启:C:/Users/lenovo/Desktop/esehi.py ================= =

追加总时间:480296

逗号的总时间:48906

谁能告诉我哪个更好?

更新*

正如蒂姆建议的那样,尝试使用 timeit 但出现错误 -

timeit.timeit(arr.append(i) for i in range(10**7))
timeit.timeit(new_arr+=, for i in range(10**7))

new_arr+=,但是在如何正确执行时出现语法错误?

标签: python-3.x

解决方案


你可以试试这个

import timeit

code = '''
new_arr = []
for i in range(10*3):
    new_arr.append(i)
'''
print(timeit.timeit(stmt = code, number =1))

code = '''
new_arr = []
for i in range(10*3):
    new_arr+=i,
'''
print(timeit.timeit(stmt = code, number =1))

timeit 函数将只运行由 number 参数指定的代码块 1 次,并将结果作为时间度量(以秒为单位)作为浮点数返回


推荐阅读