DRO*_*mes 5 python optimization list python-3.x
使用 list: [-1, 0, 43, 128, 32],有几种方法可以删除最后一个元素。
list.pop()list = list[:-1] (不建议?)del list[-1]它们都会返回[-1, 0, 43, 128],但是计算强度最低的是什么,它有什么不同吗?我知道timeit我可以用来为自己测试的模块。但我对不受控制的变量持谨慎态度,我的非专业知识肯定会稀释结果。同样,对于字符串、浮点数或布尔值,最佳选择是否有所不同?多维列表呢?
我不太确定如何控制和测试这些变量,所以我想我会在这里询问是否有一般的层次结构。
该问题解释了删除方法之间的差异,但不涉及切片。它也根本没有解决速度问题。接受的答案含糊地提到了效率,我可以将其视为解决方案的一部分,但我看不出它如何适合切片。
正如Python wiki中提到的。时间复杂度如下:
O(1) O(n) O(k+n) import time
all_t = 0.
for i in range(1000):
list_ = [i for i in range(100000)]
start_ = time.time()
list_.pop()
all_t += time.time() - start_
print("Average Time for POP is {}".format(all_t/1000.))
all_t = 0.
for i in range(1000):
list_ = [i for i in range(100000)]
start_ = time.time()
del list_[-1]
all_t += time.time() - start_
print("Average Time for DEL is {}".format(all_t/1000.))
all_t = 0.
for i in range(1000):
list_ = [i for i in range(100000)]
start_ = time.time()
list_ = list_[:-1]
all_t += time.time() - start_
print("Average Time for SLICE is {}".format(all_t/1000.))
Run Code Online (Sandbox Code Playgroud)
Average Time for POP is 7.793903350830078e-07
Average Time for DEL is 9.80854034423828e-07
Average Time for SLICE is 0.0006206443309783935
Run Code Online (Sandbox Code Playgroud)
pop()不指定索引时最快。
| 归档时间: |
|
| 查看次数: |
1267 次 |
| 最近记录: |