python-3.x - 在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+=,
但是在如何正确执行时出现语法错误?
解决方案
你可以试试这个
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 次,并将结果作为时间度量(以秒为单位)作为浮点数返回
推荐阅读
- python-3.x - 使用客户转换器中的智能函数向数据框添加功能
- r - 将 DALEX 解释函数应用于 xgboost 模型以进行 what_if / centerisParibus 分析
- javascript - 在 JavaScript 中,有没有办法在不使用 toLocaleString 的情况下将日期转换为时区?
- python - 如果我在 __exit__ 方法中返回 self,为什么异常会消失?
- javascript - 为什么 keyDown 事件监听器似乎随机触发了错误的功能?
- swap - QuantLib:面值掉期率计算
- gatsby - GatsbyJS - 解析带有和不带有“.html”后缀的页面 URL
- wpf - 鼠标悬停时带有内容模板更改背景的 wpf 控件
- c++ - 从文件中读取会导致 C++ 中出现空行
- angular - Angular - 一旦在订阅中更改其值,变量就不会在视图中更新