我有一个固定的对象,如下:
TAG_SET = [...]
我在循环中迭代它两次
for x in very_outer_object:
# ...
for t1, t2 in itertools.product(TAG_SET, repeat=2)
是否可以创建一个可重复使用的产品? itertools.product
的结果不是一成不变的。它是某种类型的生成器(即它在实现中使用yield
。)
这个循环是我程序中的性能瓶颈所以我正在寻求优化它。
答案 0 :(得分:0)
在生成器对象上调用list
会强制它评估其所有项目:
products = list(itertools.product(TAG_SET, repeat=2))
for x in very_outer_object:
# ...
for t1, t2 in products:
# ...
products
现在可以在你的内循环中重复使用。
如果len(TAG_SET)
不是非常大,则不应出现任何内存问题。