我在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,但我不确定。
答案 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。