python - python中的reverse函数是如何实现的?
问题描述
我一直在尝试使用就地重新排序元素来反转python中的
列表
def reverseArray(a):
for i in range(int(len(a) / 2)):
temp = a[i]
a[i] = a[len(a) - i - 1]
a[len(a) - i - 1] = temp
return a
我使用以下脚本运行基准测试
for s in range(20):
a = [i for i in range(30002023)]
tick = time.time()
reverseArray(a)
tok = time.time()
print(f"tok-tick:{tok-tick}")
这给了我以下输出
tok-tick:5.572033643722534
tok-tick:5.721977472305298
tok-tick:6.386164665222168
tok-tick:7.384392738342285
tok-tick:10.91420841217041
tok-tick:7.937604904174805
tok-tick:6.611226320266724
tok-tick:5.531114339828491
tok-tick:6.300005674362183
tok-tick:5.5767083168029785
tok-tick:5.933243274688721
tok-tick:5.885504961013794
tok-tick:5.496972560882568
tok-tick:5.854052543640137
tok-tick:5.983134984970093
tok-tick:5.644777059555054
tok-tick:6.585403680801392
tok-tick:6.760901927947998
tok-tick:5.675948619842529
tok-tick:6.09527063369751
但是 当我使用反向数组函数在同一基准上运行预定义函数时,使用
def reverseArray(a):
return [ e for e in reversed(a)]
我得到以下输出
tok-tick:0.9134881496429443
tok-tick:0.922814130783081
tok-tick:0.9020524024963379
tok-tick:0.9431264400482178
tok-tick:0.8796248435974121
tok-tick:0.9475719928741455
tok-tick:0.9039063453674316
tok-tick:0.9342403411865234
tok-tick:0.8823723793029785
tok-tick:0.9073545932769775
tok-tick:0.869114875793457
tok-tick:0.899376630783081
tok-tick:0.8696825504302979
tok-tick:0.9529657363891602
tok-tick:0.8960628509521484
tok-tick:0.9192886352539062
tok-tick:0.9400691986083984
tok-tick:0.9219272136688232
tok-tick:0.8531026840209961
tok-tick:0.9414753913879395
我真的很想知道为什么性能上有这么大的差异?
解决方案
推荐阅读
- python - 在单个图中绘制多个图
- jenkins-pipeline - 通过管道执行动态命令的 JenkinsFile
- acumatica - Acumatica - 修订
- python - 当测试数据集中的行被打乱时,分类性能会下降
- r - 使用 RStudio 和 Knitr,如何对特定列进行可变颜色编码?
- java - 解决或命名此消息的问题:'无权打开应用程序“ECGWorkbench”
- wso2 - WSO2 EI 6.5.0 在 SOAP 服务响应中启用 MTOM
- angular - 如何使 Mat-Table 中的列值成为超链接
- python - DRF ApiTest 在旧代码上运行,不更新
- python - 如何在模板中使用 Flask 的 url_for?