如何初始化空列表?

12 投票
2 回答
54154 浏览
提问于 2025-04-16 05:56

每次从表单获取输入的 s 时,list 都会重新初始化。这段代码要怎么改,才能把每个新的 s 添加到列表中呢?

谢谢。

class Test(webapp.RequestHandler):
    def get(self):

        s = self.request.get('sentence')
        list = []                                   
        list.append(s)                      
        htmlcode1 = HTML.table(list)        

2 个回答

5

你可以把这个列表设为对象的一个成员变量,然后只有在调用 get() 方法的时候才更新它:

class Test(webapp.RequestHandler):
    def __init__(self, *p, **kw): # or whatever parameters this takes
        webapp.RequestHandler.__init__(self, *p, **kw)
        self.list = []

    def get(self):
        s = self.request.get('sentence')
        self.list.append(s)                      
        htmlcode1 = HTML.table(self.list)        
6

我不太清楚你代码的具体情况,但这个应该可以用:

class Test(webapp.RequestHandler):
    def get(self):
        s = self.request.get('sentence')
        try:
            self.myList.append(s)
        except NameError:
            self.myList= [s]
        htmlcode1 = HTML.table(self.myList)

这样做会把 list 变成一个实例变量,这样它就能一直存在了。不过问题是,第一次我们尝试使用 list 时,它可能还没有被创建,所以在这种情况下我们需要先初始化它。

其实,看看这个帖子,这样写可能会更简洁:

class Test(webapp.RequestHandler):
    def get(self):
        s = self.request.get('sentence')
        if not hasattr(self, 'myList'):
            self.myList = []
        self.myList.append(s)
        htmlcode1 = HTML.table(self.myList)

[编辑:]

上面的代码出了一些问题,所以试试这个:

class Test(webapp.RequestHandler):
    myList = []
    def get(self):
        s = self.request.get('sentence')
        self.myList.append(s)
        htmlcode1 = HTML.table(self.myList)

撰写回答