2014-09-24 97 views
-3

我有一个6000+元素列表(称为area_num)来处理。我的代码看起来像:Python列表索引超出范围,6000个元素列表

#---------------------------------------------------------------------------- 
    def getBusInfo_AreaName(area_num): 
     area_name=[] 
     for i in range(0,TotalBusNumber) : 
      area_name[0][i]= AreaNameList[0][area_num[0][i]] 

    return area_name 
    #---------------------------------------------------------------------------- 
    area_name=getBusInfo_AreaName(area_num) 

而且AreaNameList将为[[A,B,C,d,E,F]]仅包括6个元素。如果我知道区号,我需要区域名称。每个对象都有区号和区域名称作为其属性。

信息:

TotalBusNumber = 6000 +

area_num [0]有6000+的元素

请给我一些想法,为什么Pyhton总是抱怨 '列表索引超出范围......'

谢谢大家!

+1

不要只是转储一小段代码(特别是带有IndentationError的无效代码)和错误的描述,给我们实际的代码来重现问题和实际的异常回溯。请参阅帮助中的[MCVE](http://stackoverflow.com/help/mcve)以获取指导。这使得人们无需猜测就可以更轻松地调试您的问题。 – abarnert 2014-09-24 19:25:45

+1

“area_name [0]”中有多少个元素,“TotalBusNumber”中的值是多少? – tttthomasssss 2014-09-24 19:25:55

+2

此外,我不知道这是否是你的问题,但[[A,B,C,D,E,F]]不包括6个元素,它包括1个元素是一个包含6个元素的列表)。 – abarnert 2014-09-24 19:26:54

回答

1

Python不会仅仅因为引用它们而创建列表项。 area_name[0][i]不存在,因此引发异常。我不确定这段代码在做什么,但它接近你想要做的就是复制一个子列表。

def getBusInfo_AreaName(area_num): 
    area_name=[] 
    area_name.append(area_num[0][:]) 
    return area_name 

这可能会减少多一点,但我认为它的所有只是示例代码无论如何。