如何在Python中反向迭代列表?
请参见:如何获得列表的反向副本(避免在.reverse后链接方法时使用单独的语句)?
如何在Python中反向迭代列表?
请参见:如何获得列表的反向副本(避免在.reverse后链接方法时使用单独的语句)?
当前回答
另一个解决方案是使用numpy。翻一下
import numpy as np
array = [0, 10, 20, 40]
list(np.flip(array))
[40, 20, 10, 0]
其他回答
通过切换相反索引的引用来就地反转:
>>> l = [1,2,3,4,5,6,7]
>>> for i in range(len(l)//2):
... l[i], l[-1-i] = l[-1-i], l[i]
...
>>> l
[7, 6, 5, 4, 3, 2, 1]
如果你想在其他变量中存储反转列表的元素,那么你可以使用revArray = array[::-1]或revArray = list(reversed(array))。
但是第一个变体稍微快一点:
z = range(1000000)
startTimeTic = time.time()
y = z[::-1]
print("Time: %s s" % (time.time() - startTimeTic))
f = range(1000000)
startTimeTic = time.time()
g = list(reversed(f))
print("Time: %s s" % (time.time() - startTimeTic))
输出:
Time: 0.00489711761475 s
Time: 0.00609302520752 s
下面是一种使用生成器对反向进行惰性计算的方法:
def reverse(seq):
for x in range(len(seq), -1, -1): #Iterate through a sequence starting from -1 and increasing by -1.
yield seq[x] #Yield a value to the generator
现在像这样迭代:
for x in reverse([1, 2, 3]):
print(x)
如果你需要一个列表:
l = list(reverse([1, 2, 3]))
有3种方法可以获得反向列表:
切片方法1:reversed_array = array[-1::-1] 切片方法二: Reversed_array2 = array[::-1] 使用内置函数:reversed_array = array.reverse()
第三个函数实际上颠倒了列表对象。这意味着不维护原始数据的副本。如果您不想维护旧版本,这是一个很好的方法。但如果你想要原始和反转的版本,这似乎不是一个解决方案。
use
print(list(reversed(list_name)))