如何在Python中反向迭代列表?
请参见:如何获得列表的反向副本(避免在.reverse后链接方法时使用单独的语句)?
如何在Python中反向迭代列表?
请参见:如何获得列表的反向副本(避免在.reverse后链接方法时使用单独的语句)?
当前回答
def reverse(text):
output = []
for i in range(len(text)-1, -1, -1):
output.append(text[i])
return output
其他回答
一个干净简单的类对象来解决您的问题。
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]))
使用一些逻辑
用一些老派的逻辑来练习面试。
从前到后交换数字。使用两个指针索引[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]
如果你想在其他变量中存储反转列表的元素,那么你可以使用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
array=[0,10,20,40]
for e in reversed(array):
print e
有3种方法可以获得反向列表:
切片方法1:reversed_array = array[-1::-1] 切片方法二: Reversed_array2 = array[::-1] 使用内置函数:reversed_array = array.reverse()
第三个函数实际上颠倒了列表对象。这意味着不维护原始数据的副本。如果您不想维护旧版本,这是一个很好的方法。但如果你想要原始和反转的版本,这似乎不是一个解决方案。