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
但还是尽量使用迭代器吧,数据量很大的时候不用迭代器的话有可能会占用过多的内存。

原文地址:https://www.cnblogs.com/minxiang-luo/p/12405115.html

时间: 2024-10-11 11:45:34

Python列表倒序输出及其效率的相关文章

【python】 倒序输出字符串

By Dolphin , 20150730 Title : 编写一个程序,获取用户输入的一条信息,然后将其倒序输出. Code: # Reverse Word # By Dolphin,20150730 # word = input("Please Enter a word :") # creat a jumble word  jumble = "" position = len(word) - 1 while word and position != -1 : j

Python 实现倒序输出(逆序自动回复)

>>> s = 'shiyanlou' >>> s[1:3] #这里呢,是左闭右开,是角标大于等于1并且小于3,就是1,2咯,所以是'hi' 'hi' >>> s[0:7:1] #这里呢,等于s[0:7],因为递增的值1是默认的,你也可以改 'shiyanl' >>> s[0:7:2] #递增2,看下结果,对上了吧 'sial' >>> s[-9:-3] #其实s是不仅仅是'shiyanlou',更是'shiyanl

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

Python中将一个对象倒序输出的3种方法就用列表来举例说明吧: >>> lst = [1,2,3,4,5,6] #创建一个表 #方法1: >>> lst1 = [i for i in reversed(lst)] #reversed只适用于与序列(列表.元组.字符串) >>> lst1 [6, 5, 4, 3, 2, 1] #方法2: >>> lst2 = sorted(lst,reverse=True) #sorted+rever

python中实现两个列表同时输出元素的方法zip

记:这个问题其实曾经在群里向一些同学求教过,但是在后来的写程序的过程,又把这个方法忘记了,所以今天在这里把这个问题说明下,以免下次再犯同样的问题! 假设有两个列表 a = [1,2,3,4,5,], b = [6,7,8,9,10],现在要求分别从这两个列表中输出元素,则可以使用for循环来实现这个功能 程序: for item1, item2 in zip(a, b): print "a:%s, b:%s" %(item1, item2) 结果如下: a:1 ,b:6 a:2 ,b:

Python列表中包含中文时输出十六进制转中文的小方法

现象:列表中的中文打印出来后显示为十六进制 >>> lt=['大神','zhzhgo'] >>> print lt ['\xb4\xf3\xc9\xf1', 'zhzhgo'] >>> 首先需要明确,这不是乱码,这是 unicode 字符串在内存中的形式,python 在命令行界面输出的数据,如果不是ASCII码,则会以十六进制形式输出. 如何使打印出来的结果显示为中文呢?解决办法如下: #-*-coding:utf-8-*- lt=["大神

python列表处理效率对比测试

Python列表添加元素效率测试 #!/usr/bin/env import datetime class adair: def test1(n): lst=[] for i in range(n*10000): lst = lst + [i] return lst def test2(n): for i in range(n*10000): lst = lst.append(i) return lst def test3(n): return [i for i in range(n*10000

利用Python实现倒序任意整数

这是很早以前学习C时候做过的一个练习题,题目的要求大概是把用户输入的三位数倒序输出,比如说用户输入123,然后程序应该输出的结果是321.如果遇到用户输入100,那么程序应该输出1.然后我给扩展一下,这个程序来适应于三位数以上的或者三位数以下的. 那么遇到这个问题,我首先的思路就是想办法把用户输入的数字给他拆开,然后放在列表里边.然后拿出来重新拼接一下就好了.所以我写好的前边的代码如下: #!/usr/bin/env python # -*- coding:utf-8 -*- number =

Python列表的增删改查排

Python列表的增删改查排 一.列表的样子: a = ['q' , 'w' , 'e ', 'r','t'] a为列表名,[ ]为列表内容,' '为列表内的元素,'q'为a[0] 二.查(也称切片): print ( a[0] )          #取出列表中第一个元素 即:q print ( a[1:] )        #从第二个元素开始取到最后 即:['w', 'e','r', 't'] print ( a[1:3] )        #取出从第二个开始到第三个元素 即:['w','e

python之倒序字符串

python: 需求:输入任意字符串,结果倒序输出该字符串! #!/usr/bin/env python s = raw_input("Please enter a string:") alist = list(s) alist.reverse() kong = '' print kong.join(alist) 用到知识点: 1.字符串转列表    list()函数 2.列表倒序方法     reverse()方法 列表.reverse() 3.列表转字符串    join()方法