Python列表倒序输出及其效率

Posted 猫窝

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python列表倒序输出及其效率相关的知识,希望对你有一定的参考价值。

Python列表倒序输出及其效率

方法一

使用Python内置函数reversed()

for i in reversed(arr): pass

reversed返回的是迭代器,所以不用担心内存问题。

方法二

使用range()倒序

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

方法三

先使用list自带的reverse()函数,再用range()循环

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

因为要先倒序,再循环,所以效率会比较低。

方法四

先使用list自带的sort()函数来倒序,再用range()循环

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)

对比结果

数组长度为一百万时(跑了三次):


数组长度为一千万时(跑了两次):

数组长度为一亿时(跑了两次):

结论

效率:方法一 > 方法二 > 方法三 > 方法四
然而并不差多少emmm
但还是尽量使用迭代器吧,数据量很大的时候不用迭代器的话有可能会占用过多的内存。

以上是关于Python列表倒序输出及其效率的主要内容,如果未能解决你的问题,请参考以下文章

python怎么将列表/字符串倒序输出

Python中将一个对象倒序输出的3种方法

利用Python实现倒序任意整数

#yyds干货盘点#反转密码方法 - python基础学习系列(59)

python中的倒序遍历

python四种列表的插入方法及其效率