Python列表倒序輸出及其效率詳解
Python列表倒序輸出及其效率
方法一
使用Python內置函數(shù)reversed()
for i in reversed(arr): pass
reversed返回的是迭代器,所以不用擔心內存問題。
方法二
使用range()倒序
for i in range(len(arr) - 1, -1, -1): pass
方法三
先使用list自帶的reverse()函數(shù),再用range()循環(huán)
arr.reverse() for i in range(len(arr)): pass
因為要先倒序,再循環(huán),所以效率會比較低。
方法四
先使用list自帶的sort()函數(shù)來倒序,再用range()循環(huán)
arr.sort(reverse=True) for i in range(len(arr)): pass
因為要先排序,再循環(huán),所以效率會比較低。
這里不討論Python內置函數(shù)sorted(),它的效率比list自帶的sort()函數(shù)要慢。
效率
對比代碼
import time
arr = [x for x in range(10000000)]
arr1 = arr.copy()
start = time.process_time()
for i in reversed(arr): pass
end = time.process_time()
print('方法一(reversed):', end - start)
start = time.process_time()
for i in range(len(arr) - 1, -1, -1): pass
end = time.process_time()
print('方法二(range倒序):', end - start)
start = time.process_time()
arr.reverse()
for i in range(len(arr)): pass
end = time.process_time()
print('方法三(先reverse再range):', end - start)
start = time.process_time()
arr1.sort(reverse=True)
for i in range(len(arr1)): pass
end = time.process_time()
print('方法四(先sort再range):', end - start)
對比結果
數(shù)組長度為一百萬時(跑了三次):



數(shù)組長度為一千萬時(跑了兩次):


數(shù)組長度為一億時(跑了兩次):


結論
效率:方法一 > 方法二 > 方法三 > 方法四
然而并不差多少emmm
但還是盡量使用迭代器吧,數(shù)據(jù)量很大的時候不用迭代器的話有可能會占用過多的內存。
到此這篇關于Python列表倒序輸出及其效率詳解的文章就介紹到這了,更多相關Python列表倒序輸出及其效率內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python multiprocessing模塊用法及原理介紹
這篇文章主要介紹了python multiprocessing模塊用法及原理介紹,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-08-08
Python3二分查找?guī)旌瘮?shù)bisect(),bisect_left()和bisect_right()的區(qū)別
這篇文章主要介紹了Python3二分查找?guī)旌瘮?shù)bisect(),bisect_left()和bisect_right()的區(qū)別,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-03-03
python和shell實現(xiàn)的校驗IP地址合法性腳本分享
這篇文章主要介紹了python和shell實現(xiàn)的校驗IP地址合法性腳本分享,每個腳本配有執(zhí)行效果圖,需要的朋友可以參考下2014-10-10
python創(chuàng)建字典(dict)的幾種方法小結(含代碼示例)
字典(Dictionary)是Python中一種非常靈活的數(shù)據(jù)結構,用于存儲鍵值對(key-value pairs),在Python中創(chuàng)建字典有多種方法,每種方法都有其特定的使用場景和優(yōu)勢,本文將詳細介紹Python中創(chuàng)建字典的幾種常見方法,需要的朋友可以參考下2024-09-09
YOLOv5車牌識別實戰(zhàn)教程(三)模型訓練與評估
這篇文章主要介紹了YOLOv5車牌識別實戰(zhàn)教程(三)模型訓練與評估,在這個教程中,我們將一步步教你如何使用YOLOv5進行車牌識別,幫助你快速掌握YOLOv5車牌識別技能,需要的朋友可以參考下2023-04-04
重寫django的model下的objects模型管理器方式
這篇文章主要介紹了重寫django的model下的objects模型管理器方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05

