Python:IndexError:列表索引超出范围

时间:2012-10-05 23:42:17

标签: python-2.7

我一直收到这个错误:

line 4, in timesTwo 
IndexError: list index out of range

此计划:

def timesTwo(myList):
counter = 0
while (counter <= len(myList)):
    if myList[counter] > 0:
        myList[counter] = myList[counter]*2
        counter = counter + 1
    elif (myList[counter] < 0):
        myList[counter] = myList[counter]*2
        counter = counter + 1
    else:
        myList[counter] = "zero"
return myList

我不确定如何修复错误。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

您正在将while循环的上限设置为myList的长度,这意味着counter的最终值将是长度。由于列表从0开始编制索引,因此会导致错误。您可以通过删除=符号来解决此问题:

while (counter < len(myList)):

或者,您可以在for循环中执行此操作,这可能更容易处理(不确定这是否适合您的用例,因此如果没有,上述情况应该有效):

def timesTwo(myList):

  for index, value in enumerate(myList):
    if value is not 0:
      myList[index] *= 2
    else:
      myList[index] = 'zero'

  return myList