python最新版本 效率_Python:迭代列表与dict项目效率
這取決于您使用的是哪個版本的Python.在Python 2中,some_dict.items()創建一個新列表,這會占用一些額外的時間并占用額外的內存.另一方面,一旦創建了列表,它就是一個列表,因此在列表創建的開銷完成后應具有相同的性能特征.
在Python 3中,some_dict.items()創建了一個視圖對象而不是列表,我預計創建和迭代items()會比在Python 2中更快,因為沒有必要復制.但是我也期望迭代已經創建的視圖比在已經創建的列表上迭代要慢一點,因為字典數據的存儲有點稀疏,我相信python沒有好辦法避免迭代每個bin.字典 – 甚至是空字典.
在Python 2中,一些時間證實了我的直覺:
>>> some_dict = dict(zip(xrange(1000), reversed(xrange(1000))))
>>> some_list = zip(xrange(1000), xrange(1000))
>>> %timeit for t in some_list: t
10000 loops, best of 3: 25.6 us per loop
>>> %timeit for t in some_dict.items(): t
10000 loops, best of 3: 57.3 us per loop
對項目進行迭代的速度大約是其兩倍.使用iteritems要快一點……
>>> %timeit for t in some_dict.iteritems(): t
10000 loops, best of 3: 41.3 us per loop
但迭代列表本身與迭代任何其他列表基本相同:
>>> some_dict_list = some_dict.items()
>>> %timeit for t in some_dict_list: t
10000 loops, best of 3: 26.1 us per loop
Python 3可以比Python 2更快地創建和迭代項目(與上面的57.3我們相比):
>>> some_dict = dict(zip(range(1000), reversed(range(1000))))
>>> %timeit for t in some_dict.items(): t
10000 loops, best of 3: 33.4 us per loop
但創建視圖的時間是可以忽略不計的;迭代實際上比列表慢.
>>> some_list = list(zip(range(1000), reversed(range(1000))))
>>> some_dict_view = some_dict.items()
>>> %timeit for t in some_list: t
10000 loops, best of 3: 18.6 us per loop
>>> %timeit for t in some_dict_view: t
10000 loops, best of 3: 33.3 us per loop
這意味著在Python 3中,如果要對字典中的項進行多次迭代,并且性能至關重要,則可以通過將視圖緩存為列表來獲得30%的加速.
>>> some_list = list(some_dict_view)
>>> %timeit for t in some_list: t
100000 loops, best of 3: 18.6 us per loop
總結
以上是生活随笔為你收集整理的python最新版本 效率_Python:迭代列表与dict项目效率的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大家对打孩子是怎么看的啊?[已扎口]
- 下一篇: 批量 材质 调整_SMT打样小批量加工中