0

我在 Python 2.7 中有一段非常简单的代码,我必须使用 awhile 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要求 pythonfruit在索引小于或等于水果的大小时使用 var。问题是当索引为 0 时,我也尝试过使用 < 但是我编写代码的方式似乎仍然超过 0,但我不确定。

4

1 回答 1

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

或者,如果您保持indexto 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 的切片表示法

于 2013-07-21T14:39:01.953 回答