PYTHON
我在数组的位置tam + 1中将值0赋予属性,但发生相同的错误“ IndexError:列表分配索引超出范围”,我不知道为什么。
我的代码如下:
from math import sqrt as s
Tam = 3
soma = 0
R = [Tam + 2]
G = [Tam + 2]
B = [Tam + 2]
Rf = [Tam]
Gf = [Tam]
Bf = [Tam]
dist = [Tam]
R[0] = 0
R[Tam + 1] = 0
G[0] = 0
G[Tam + 1] = 0
B[0] = 0
B[Tam + 1] = 0
并显示了这一点:
File "exer1.py", line 17, in <module>
R[Tam + 1] = 0
IndexError: list assignment index out of range
答案 0 :(得分:1)
在您的代码中,您引用R[Tam + 1]
,这是给出错误的行。之前,您将Tam
定义为等于3,并将R
定义为等于[Tam + 2]
,这将产生一个包含一个元素Tam + 2
的列表,或者,因为您先前已定义Tam
,5。换句话说,R
是一个包含单个元素5的列表。
接下来,您尝试引用R
-Tam + 1
或4中的特定元素。您必须在R
中具有五个元素,R[4]
才能存在,因此它返回错误IndexError
,因为您提供的索引没有导致正确的元素。
要解决此问题,我们必须确切地知道您想要在这里做什么。如果您想将元素Tam + 1
添加到列表中,则可以执行R.append(Tam + 1)
。如果要将列表中的第四个元素设置为零,则可以执行R[Tam + 1] = 0
;但是,列表中没有第四个元素设置为零。
这些不是修复程序所必需的,但是您可能想通读PEP8(Python的样式指南)。特别是,我注意到您正在导入不需要的程序包(当然,稍后可能会在程序中使用它;我不知道),当您使用单字母大写名称定义变量时,理想情况下,您将使用更长的更具描述性的名称。您也有Rf
之类的名称,理想情况下,它的名称应为r_f
(更具描述性)。您可能还希望在代码中添加注释,以说明正在发生的情况。这些更改将使其他人和您自己更容易阅读代码,发现问题或添加到代码中。
答案 1 :(得分:0)
Python列表分配无法以您认为的方式工作。
分配列表时,您可以按照以下方式进行操作。
my_list = [element_1, element_2, element_3, ...]
您正在使用(组合)语法。
my_list = [size_of_list]
现在您知道这一点,我相信您可以再给您代码一次。