Python向后遍历索引变量

时间:2013-07-21 14:36:54

标签: python python-2.7 while-loop

我在Python 2.7中有一段非常简单的代码,我必须使用while loop向后遍历索引。我正在向后打印,但我的while loop并没有停在最后,因此会产生超出范围的错误,我不知道为什么。我试图解决它但失败了。

这是我的代码:

fruit = 'banana'
print len(fruit)

index = 0
while index <= len(fruit):
    letter = fruit[index - 1]
    print letter
    index = index - 1

我认为这里正在进行的是我正在将var index初始化为0,然后要求python使用var fruit,而索引小于或等于水果的大小。问题是当index变为0时,我也试过使用&lt;但是我编写代码的方式似乎仍然超过0,但我不确定。

1 个答案:

答案 0 :(得分:5)

您的索引来自0, -1, -2...,而长度为0或正数,一旦负指数超出-len(lst)限制,您就会出现越界错误。

>>> test = [1, 2, 3]
>>> test[-1]
3
>>> test[-2]
2
>>> test[-4]

Traceback (most recent call last):
  File "<pyshell#75>", line 1, in <module>
    test[-4]
IndexError: list index out of range

您可以通过将索引变量初始化为len(lst) - 1并迭代到0来解决此问题。

index = len(test) - 1
while index >=0: 
    # Do Something

或者如果您将index保持到0,那么您可以将while循环更改为

while index > -len(fruit):
    # Do Something

替代 - 您可以在此处使用反向列表上的for循环以反向迭代列表。参见示例

>>> testList = [1, 2, 3]
>>> for i in testList[::-1]:
        print i


3
2
1

testList[::-1]Python's Slice Notation