列表索引超出范围-Python列表包含一个元素

时间:2018-06-27 21:24:36

标签: python list append

我有一个列表,其中只有一个元素为:

tempeqpos2 = [600]

其坐标存储在名为points3的列表中,如下所示:

points3 = [(1795,3866)]

现在,我正尝试将此坐标附加到名为originalval2的列表中,如下所示:

 originalval2=[]
 for att in tempeqpos2:  
     originalval2.append(list(points3[att]))

但这给了我IndexError: list index out of range。您能在这里解决问题吗?

由于每个tempeqpos2points3只有一个元素,因此我尝试通过给originalval2来制作originalval2=points3。但这不起作用...

7 个答案:

答案 0 :(得分:6)

您的问题是当您尝试访问 points3 [att] 时。

因为 att 解析为整数 600 ,所以您实际上只要求 points3 [0]时要求 points3 [600] ] 存在。

答案 1 :(得分:1)

我会尽力向您解释最清楚

 tempeqpos2 = [600]
 points3 = [(1795,3866)]
 originalval2=[]
 for att in tempeqpos2:  #see that "att" value for the first iteration is 600
 originalval2.append(list(points3[att])) #and here you are asking for the "att"=600 element of the list "points3" that only have 1 element that is (1795,3866)
# and how you know is imposible ask for the element 600 if your list only have 1 element

答案 2 :(得分:1)

您的att被分配给tempeqpos2的每一项,这是一个整数列表,在这种情况下,它只是600,因此当计算points3[att]时,它会尝试访问600列表中的索引points3,该索引不存在,因为points3只有一项。

由于points3中的项目与tempeqpos2中的项目相对应,因此建议将它们作为字典加入:

originalval2 = {}
for i, att in enumerate(tempeqpos2):  
    originalval2[att] = points3[i]

答案 3 :(得分:1)

在tempeqpos2中的att之后调用point3 [att]时,att等于600。调用point3 [att]就是在列表point3中调用位置600。

答案 4 :(得分:1)

您可以使用index来获取所需obj的位置。

示例:

points3 = [(1795,3866)]
tempeqpos2 = [600]
originalval2=[]
for att in tempeqpos2:
    originalval2.append(list(points3.index(att))

originalval2将包含(1795,3866)

或使用字典:

points3 = [(1795,3866)]
tempeqpos2 = [600]
originalval2={}
for att in tempeqpos2:
    originalval2.append(dict(points3.index(att : tempeqpos2.index(att)))

originalval2将包含600 : (1795,3866)

答案 5 :(得分:0)

最初,您尝试做的是尝试访问第600个位置的元素,而列表中只有一个元素。您需要访问第一个位置上的元素。

tempeqpos2 = [600]
points3 = [(1795,3866)]
originalval2=[]
for att in tempeqpos2:  
    originalval2 = points3[0]

print(originalval2)

答案 6 :(得分:0)

使用字典可能更有意义:

tempeqpos2 = [600]
points3 = [(1795,3866)]

originalval2 = {}
for index, att in enumerate(tempeqpos2):  
    originalval2[att] = points3[index]

print(originalval2)

运行时:

>>> tempeqpos2 = [600]
>>> points3 = [(1795,3866)]
>>>
>>> originalval2 = {}
>>> for index, att in enumerate(tempeqpos2):
...     originalval2[att] = points3[index]
...
>>> print(originalval2)
{600: (1795, 3866)}
>>>