我正在查看从互联网上下载的一些代码。这是一个基本的网络爬虫。我遇到了以下for
循环:
for link in (links.pop(0) for _ in xrange(len(links))):
...
现在,我觉得下面的代码也可以工作:
for link in links:
....
links=[]
研究,我发现第一个实例清除links
并生成一个generator object (genexpr)
. links
从未在for
循环中使用,因此它的递减长度与代码无关。
每次使用 xrange 并弹出元素有什么特别的原因吗?即使用生成器对象比调用标准列表的元素有什么优势吗?此外,在什么情况下生成器会有用;为什么?