Python列表倒序輸出及其效率

Python列表倒序輸出及其效率

方法一

使用Python內置函數reversed()python

for i in reversed(arr): pass

reversed返回的是迭代器,因此不用擔憂內存問題。數組

方法二

使用range()倒序函數

for i in range(len(arr) - 1, -1, -1): pass

方法三

先使用list自帶的reverse()函數,再用range()循環3d

arr.reverse()
for i in range(len(arr)): pass

由於要先倒序,再循環,因此效率會比較低。code

方法四

先使用list自帶的sort()函數來倒序,再用range()循環blog

arr.sort(reverse=True)
for i in range(len(arr)): pass

由於要先排序,再循環,因此效率會比較低。排序

這裏不討論Python內置函數sorted(),它的效率比list自帶的sort()函數要慢。內存

效率

對比代碼

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)

對比結果

數組長度爲一百萬時(跑了三次):


class

數組長度爲一千萬時(跑了兩次):

效率

數組長度爲一億時(跑了兩次):

結論

效率:方法一 > 方法二 > 方法三 > 方法四 然而並不差多少emmm 但仍是儘可能使用迭代器吧,數據量很大的時候不用迭代器的話有可能會佔用過多的內存。

相關文章
相關標籤/搜索