(IndexError:列表分配索引超出范围)错误索引数组

时间:2019-01-19 23:14:47

标签: python arrays

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 

2 个答案:

答案 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]

现在您知道这一点,我相信您可以再给您代码一次。

相关问题