使用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 但仍是儘可能使用迭代器吧,數據量很大的時候不用迭代器的話有可能會佔用過多的內存。