返回多个“while”循环结果

时间:2013-12-03 00:28:51

标签: python list loops while-loop

我有一个while循环,它将数据返回给函数。

    while (count < int(pagecount)):
        count = count + 1
        request = requestGet("http://www.site.com/User.aspx?ID={0}&page={1}".format(self.userid, count))
        regexdata = re.findall('REGEX" REGEX="(.*?)"', request)
        return regexdata

我需要知道如何将每个值返回到while循环所在的函数。另外,更具体地说,我返回的数据实际上是在列表中。因此,可能以某种方式将新列表附加到旧列表将是更好的方法。无论哪种方式,我都迷失了,我需要帮助。

感谢。

2 个答案:

答案 0 :(得分:3)

如果你想返回一堆东西,把它们放在一个列表中并返回:

results = []
while (count < int(pagecount)):
    count = count + 1
    request = requestGet("http://www.site.com/User.aspx?ID={0}&page={1}".format(self.userid, count))
    regexdata = re.findall('REGEX" REGEX="(.*?)"', request)
    results.append(regexdata)
return results

或者,可能适合yield结果,将您的函数转换为生成器:

while (count < int(pagecount)):
    count = count + 1
    request = requestGet("http://www.site.com/User.aspx?ID={0}&page={1}".format(self.userid, count))
    regexdata = re.findall('REGEX" REGEX="(.*?)"', request)
    yield regexdata

这两个选项都允许您迭代返回值以获取元素,但生成器选项只允许您执行一次。 return会立即停止该函数,因此一旦您的函数遇到return,它就不会继续进行进一步的循环迭代。

答案 1 :(得分:2)

您可以使用Generator

def getRegexData(self):     
    while (count < int(pagecount)):
        count = count + 1
        request = requestGet("http://www.site.com/User.aspx?ID={0}&page={1}".format(
                            self.userid, count))
        yield re.findall('REGEX" REGEX="(.*?)"', request)
相关问题