如何在Python中反向迭代列表?
请参见:如何获得列表的反向副本(避免在.reverse后链接方法时使用单独的语句)?
如何在Python中反向迭代列表?
请参见:如何获得列表的反向副本(避免在.reverse后链接方法时使用单独的语句)?
当前回答
def reverse(my_list):
L = len(my_list)
for i in range(L/2):
my_list[i], my_list[L-i - 1] = my_list[L-i-1], my_list[i]
return my_list
其他回答
有3种方法可以获得反向列表:
切片方法1:reversed_array = array[-1::-1] 切片方法二: Reversed_array2 = array[::-1] 使用内置函数:reversed_array = array.reverse()
第三个函数实际上颠倒了列表对象。这意味着不维护原始数据的副本。如果您不想维护旧版本,这是一个很好的方法。但如果你想要原始和反转的版本,这似乎不是一个解决方案。
带颠倒和列表的:
>>> list1 = [1,2,3]
>>> reversed_list = list(reversed(list1))
>>> reversed_list
>>> [3, 2, 1]
使用反向(数组)可能是最好的方法。
>>> array = [1,2,3,4]
>>> for item in reversed(array):
>>> print item
如果你需要了解如何实现这个不使用内置反转。
def reverse(a):
midpoint = len(a)/2
for item in a[:midpoint]:
otherside = (len(a) - a.index(item)) - 1
temp = a[otherside]
a[otherside] = a[a.index(item)]
a[a.index(item)] = temp
return a
这需要O(N)时间。
>>> xs = [0, 10, 20, 40]
>>> xs[::-1]
[40, 20, 10, 0]
这里将解释扩展片语法。请参见文档。
另一种方法使用列表理解和abs
array = [0, 10, 20, 40]
reversed_array = [array[abs(indx)] for indx in range(abs(len(array)-1),1)]
reversed_array
[40, 20, 10, 0]