Python 追加(obj)导致回溯-这是为什么?

Python 追加(obj)导致回溯-这是为什么?,python,django,list,indexing,indexoutofboundsexception,Python,Django,List,Indexing,Indexoutofboundsexception,考虑以下代码: for url in urls: obj = HtmlInfo() obj.url = url obj.html = hc.get_html(url) obj.tag_count = hc.get_num_tags(obj.html, 0, True) htmlinfos.append(obj) 其中,url是一个url列表,htmlinfos初始化为一

考虑以下代码:

for url in urls:
        obj           = HtmlInfo()

        obj.url       = url 
        obj.html      = hc.get_html(url)
        obj.tag_count = hc.get_num_tags(obj.html, 0, True)
        htmlinfos.append(obj)
其中,
url
是一个url列表,
htmlinfos
初始化为一个空列表,如下所示-当然,在循环之前:

htmlinfos=[]

然而,无论出于何种原因,当我尝试运行此代码时,我会得到一个
列表分配索引超出范围的异常

这有什么问题吗?注意,我的Python版本是2.7,我使用的是Django的最新稳定版本(我相信是1.4)

更新-回溯

Environment:


Request Method: GET
Request URL: http://xx.xxx.xxx.xx/xxx/0/test/

Django Version: 1.4.1
Python Version: 2.7.3
Installed Applications:
('django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.admin',
 'scrapper',
 'django_pdb')
Installed Middleware:
('django.middleware.cache.UpdateCacheMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django_pdb.middleware.PdbMiddleware')


Traceback:
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
  111.                         response = callback(request, *callback_args, **callback_kwargs)
File "/usr/share/nginx/www/xxx/private/xxx/views.py" in test
  44.         return HttpResponse("Dis be er bad query yo " + test_id )
File "/usr/share/nginx/www/xxx/private/xxx/views.py" in __get_html_list
  23.     return list

Exception Type: IndexError at /xxx/0/test/
Exception Value: list assignment index out of range
更新-获取html列表()

注意

最初
htmlinfos
被简单地称为
list
,所以我在发布此内容之前更改了它,重新运行它,但仍然得到相同的错误:/

更新-获取html标签计数()

为了简单起见,我想我也可以发布这篇文章,以防这可能与问题有关:

def get_num_tags(self, html):

        if reset:
            self.reset()

        current_index = 0

        for char in html:

            if (char == "<"):

                close_index = html[current_index:].find("/>", current_index)

                if close_index == -1:
                    break
                else:
                    ++self._tag_count

            ++current_index

        return self._tag_count
def get_num_标记(self,html):
如果重置:
self.reset()
当前指数=0
对于html中的字符:
如果(字符==“”,当前索引)
如果关闭_索引==-1:
打破
其他:
++自我。\标记\计数
++当前指数
返回自我。\u标记\u计数

尝试将
++self.\u tag\u count
++current\u index
分别替换为
self.\u tag\u count+=1
current\u index+=1


++var
适用于大多数语言,但python与大多数语言不同。

请提供错误的完整回溯。根据当前信息,我们所能做的就是猜测发生了什么。根据回溯,当您尝试执行类似于list_object[k]=value when k>=len(list_object)@aboutblank:Hmm的操作时,通常会出现这种异常,错误发生在
返回列表
行中–可能您的web服务器需要重新启动才能使用当前版本的代码?似乎
列表
在某个地方被用作变量名–这是一个坏主意,因为它会隐藏内置类的名称。
++self.\u tag\u count
不是Python。它不会增加任何东西。
def get_num_tags(self, html):

        if reset:
            self.reset()

        current_index = 0

        for char in html:

            if (char == "<"):

                close_index = html[current_index:].find("/>", current_index)

                if close_index == -1:
                    break
                else:
                    ++self._tag_count

            ++current_index

        return self._tag_count