如何在Python中反向迭代列表?
请参见:如何获得列表的反向副本(避免在.reverse后链接方法时使用单独的语句)?
如何在Python中反向迭代列表?
请参见:如何获得列表的反向副本(避免在.reverse后链接方法时使用单独的语句)?
当前回答
使用一些逻辑
用一些老派的逻辑来练习面试。
从前到后交换数字。使用两个指针索引[0]和索引[last]
def reverse(array):
n = array
first = 0
last = len(array) - 1
while first < last:
holder = n[first]
n[first] = n[last]
n[last] = holder
first += 1
last -= 1
return n
input -> [-1 ,1, 2, 3, 4, 5, 6]
output -> [6, 5, 4, 3, 2, 1, -1]
其他回答
问题不是如何反向返回一个列表,而是如何使用示例列表名数组反向返回一个列表。
反转名为“array”的列表使用array.reverse()。
通过使用array[:] = array[::-1]将列表定义为对其本身的切片修改,还可以使用上面描述的非常有用的slice方法来反转列表。
下面是一种使用生成器对反向进行惰性计算的方法:
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]))
要获得一个新的反向列表,应用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
组织价值观:
在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:一个错误的版主声称我的答案是一个副本,并删除了我的旧帖子。
list_data = [1,2,3,4,5]
l = len(list_data)
i=l+1
rev_data = []
while l>0:
j=i-l
l-=1
rev_data.append(list_data[-j])
print "After Rev:- %s" %rev_data