- 偶然发现del首元素的效率非常低,因此给出下列测试
import time RANGE = 100000 # 测试规模 def test_time(func): # 测试函数执行时间 time_start=time.time() func() time_end=time.time() return time_end - time_start del_seq_asc = list(range(RANGE)) del_seq_des = list(reversed(list(range(RANGE)))) # 定义两种元素删除顺序 global_seq = [] def run_del_asc(): for i in range(RANGE): del global_seq[0] def run_del_des(): for i in range(RANGE): del global_seq[-1] def run_remove_asc(): for i in del_seq_asc: global_seq.remove(i) def run_remove_des(): for i in del_seq_des: global_seq.remove(i) def run_pop(): for i in range(RANGE): b = global_seq.pop() for func in [run_del_asc, run_del_des, run_remove_asc, run_remove_des, run_pop]: global_seq = list(range(RANGE)) print(func.__name__, ':', test_time(func)) ''' run_del_asc : 0.9148428440093994 run_del_des : 0.009972333908081055 run_remove_asc : 0.9177978038787842 run_remove_des : 58.18349075317383 run_pop : 0.007980585098266602 '''
- 可以看出针对末尾元素的pop和del效率差不多,也是仅有的两个可接受的情形,其他情形效率会不同程度下降,最坏情况是反复remove最后一个元素,估计和匹配耗时有关。
python del、remove、pop效率对比
最新推荐文章于 2022-09-23 22:48:29 发布