【发布时间】:2020-03-12 10:31:44
【问题描述】:
我想知道在 for 循环中创建(实例化)和使用的 list 是否会降低我的程序的效率。
例如:
for i in range(1, 10000):
print("This i = ", i)
请告诉我是否会生成列表 [1,2,3,...,10000](即 range(1,10000))(或实例化)在每次迭代或不。因为如果是,那么这是一个巨大的开销和低效的程序。
其实我想这样用:
with open("bbc.txt", 'w', encoding='utf-8') as bbcFile:
for headline in BS(REQ.get("https://www.bbc.com").text, 'html.parser').find_all('div', {'class':'media__content'}):
bbcFile.write(" ".join(headline.text.split()) + "\n\n")
【问题讨论】:
-
A
range依赖于生成器,所以不,不会生成 10000 次列表 -
在 Python 3 中...
range(...)根本不生成列表... -
您的“实际”示例中没有
range()。不过,BeautifulSoup 将在某个时候构建内存列表。 -
@ThomasSchillaci 不完全是生成器。这是一个自定义对象,查看*.com/questions/30081275/…
-
实际上它是一个可迭代的——但确实是一个懒惰的。
标签: python python-3.x list for-loop beautifulsoup