2024-09-24 23:34阅读: 13评论: 0推荐: 0

Python不同方式正倒序遍历的时间开销

copy
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
from timeit import timeit li = [i for i in range(1000000)] def for_loop(n): # 使用for直接遍历 ret = 0 for i in li: ret = li[i] def for_loop_enumerate(n): # 使用enumerate进行遍历 ret = 0 for idx, i in enumerate(li): ret = li[idx] def reverse_loop(n): # 使用reversed生成迭代器进行倒序遍历li ret = 0 for i in reversed(li): ret = li[i] def reverse_range(n): # 使用range进行倒序遍历li ret = 0 for i in range(len(li)-1, -1, -1): ret = li[i] for_loop_time = timeit('for_loop(1000000)', setup='from __main__ import for_loop, li', number=100) for_loop_enumerate_time = timeit('for_loop_enumerate(1000000)', setup='from __main__ import for_loop_enumerate, li', number=100) reverse_loop_time = timeit('reverse_loop(1000000)', setup='from __main__ import reverse_loop, li', number=100) reverse_range_time = timeit('reverse_range(1000000)', setup='from __main__ import reverse_range, li', number=100) print(f"for_loop_time: {for_loop_time}\n\ for_loop_enumerate_time: {for_loop_enumerate_time}\n\ reverse_loop_time: {reverse_loop_time}\n\ reverse_range_time: {reverse_range_time}") # for_loop_time: 1.3836041999747977 # for_loop_enumerate_time: 2.5846562000224367 # reverse_loop_time: 1.3863778999075294 # reverse_range_time: 1.8969372999854386

可以看到,enumerate会稍微慢点。
reversed和直接遍历没有区别,反而用range倒序遍历的时候满了一点点

注意reversed返回的是个迭代器,不要想着赋值重用(对没错就是我...)

本文作者:faf4r

本文链接:https://www.cnblogs.com/faf4r/p/18430327

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   faf4r  阅读(13)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起