IndexError - 我做错了什么?

时间:2014-12-13 22:22:38

标签: python python-2.7 indexing

以下代码会产生IndexError: list index out of range错误。我不知道为什么,代码似乎是正确的。

numlist = [2, 12]

for number in numlist:
    numlist[number] *= 3

print numlist 

1 个答案:

答案 0 :(得分:0)

number numlist 中的元素,而不是索引。 Python for循环是for each loops,其中iterable(numlist)中的每个元素都被分配给目标(number):

>>> numlist = [2, 12]
>>> for number in numlist:
...     print number
... 
2
12

如果您想更改numlist,则需要使用enumerate()函数生成索引:

for index, number in enumerate(numlist):
    numlist[index] = 3 * number

或者您可以使用列表解析重新构建列表:

numlist = [number * 3 for number in numlist]

演示:

>>> numlist = [2, 12]
>>> for index, number in enumerate(numlist):
...     numlist[index] = 3 * number
... 
>>> numlist
[6, 36]
>>> numlist = [2, 12]
>>> [number * 3 for number in numlist]
[6, 36]