如何在Python中反向迭代列表?


请参见:如何获得列表的反向副本(避免在.reverse后链接方法时使用单独的语句)?


当前回答

有3种方法可以获得反向列表:

切片方法1:reversed_array = array[-1::-1] 切片方法二: Reversed_array2 = array[::-1] 使用内置函数:reversed_array = array.reverse()

第三个函数实际上颠倒了列表对象。这意味着不维护原始数据的副本。如果您不想维护旧版本,这是一个很好的方法。但如果你想要原始和反转的版本,这似乎不是一个解决方案。

其他回答

要获得一个新的反向列表,应用reversed函数并将项目收集到一个列表中:

>>> xs = [0, 10, 20, 40]
>>> list(reversed(xs))
[40, 20, 10, 0]

在列表中向后迭代:

>>> xs = [0, 10, 20, 40]
>>> for x in reversed(xs):
...     print(x)
40
20
10
0

内置功能最少,假设是面试设置

array = [1, 2, 3, 4, 5, 6,7, 8]
inverse = [] #create container for inverse array
length = len(array)  #to iterate later, returns 8 
counter = length - 1  #because the 8th element is on position 7 (as python starts from 0)

for i in range(length): 
   inverse.append(array[counter])
   counter -= 1
print(inverse)

问题不是如何反向返回一个列表,而是如何使用示例列表名数组反向返回一个列表。

反转名为“array”的列表使用array.reverse()。

通过使用array[:] = array[::-1]将列表定义为对其本身的切片修改,还可以使用上面描述的非常有用的slice方法来反转列表。

组织价值观:

在Python中,列表的顺序也可以通过sort操作,以数字/字母顺序组织变量: 暂时:

print(排序(my_list))

永久的:

my_list.sort(), print(my_list)

你可以用"reverse=True"来排序:

print(sorted(my_list, reverse=True))

or

my_list.sort(reverse=True), print(my_list)

没有组织

也许您不想对值进行排序,而只是将值反向排列。然后我们可以这样做:

print(list(reversed(my_list)))

**数字在列表顺序上优先于字母。Python价值观的组织非常棒。

编辑1:一个错误的版主声称我的答案是一个副本,并删除了我的旧帖子。

一个干净简单的类对象来解决您的问题。

class lister():
    def reverse(self):
        return  [self[len(self)-e]for e,x in enumerate(self,start=1)]
print(lister.reverse([0, 10, 20, 40]))