我一直在阅读"索引超出范围的其他答案"问题,根据我的理解,您不能尝试将值分配给不存在的列表索引。我的第一个代码是:
spam =[]
for i in range(5):
spam[i]=i
print (spam)
在阅读了其他一些答案之后,我意识到,当我只使用range
函数时,i
从0开始并且无法分配到列表中。所以我创建了下一小段代码:
spam =[]
for i in range(5):
i += 1
spam[i]=i
print (spam)
我仍然遇到同样的错误。我知道i
现在在代码的i += 1
部分之后获得了值1,所以我认为它应该将列表项1分配为空垃圾邮件列表中的数字1,但它是'那不是这样的。为什么没有创建索引?
答案 0 :(得分:1)
当你写:
>>> x = []
您将x
定义为列表。但它是空的。
当您尝试运行
时>>> x[i] = i #let assume i is a number
这意味着您要将数组中元素编号i
的值更改为值i
。但关键是你的数组中没有元素编号i
。你的数组是空的,没有任何元素。您可以使用append()
方法为数组提供元素:
>>> x.append(i)
工作正常。然后,您可以使用以前的方式更改此新元素的值。检查一下:
>>> x = []
>>> x
[]
>>> i = 0
>>> x[i] = i
Traceback (most recent call last):
File "<pyshell#18>", line 1, in <module>
x[i] = i
IndexError: list assignment index out of range
>>> x.append(i)
>>> x
[0]
>>> x[i] = i
>>> x
[0]
>>> x[i] = 2
>>> x
[2]
>>>
答案 1 :(得分:0)
spam=[]
创建一个长度为0的空列表。然后,您建议的两个循环都会尝试访问不存在的列表元素。您可能需要执行以下操作:
spam = []
for i in range(5):
spam.append(i)