返回多个“while”循环结果
Posted
技术标签:
【中文标题】返回多个“while”循环结果【英文标题】:Return multiple "while" loop results 【发布时间】:2013-12-18 21:18:54 【问题描述】:我有一个将数据返回给函数的 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 循环所在的函数。此外,更具体地说,我返回的数据实际上是在一个列表中。因此,也许以某种方式将新列表附加到旧列表中会是一种更好的方法。不管怎样,我迷路了,我需要帮助。
谢谢。
【问题讨论】:
“将每个值返回给 while 循环所在的函数……”正是生成器的用途。请参阅教程中的Iterators 和后续两节以获取说明。 【参考方案1】:您可以使用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)
【讨论】:
【参考方案2】:如果你想返回一堆东西,把它们放在一个列表中然后返回:
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
,它就不会继续进行进一步的循环迭代。
【讨论】:
以上是关于返回多个“while”循环结果的主要内容,如果未能解决你的问题,请参考以下文章
在 while 循环中使用 -- 运算符会产生意想不到的结果