我正在尝试获取多个数组的笛卡尔积,但这些数组非常大,我正在尝试优化内存使用。我尝试使用以下代码实现生成器,但它只返回某个位置存在一个生成器。
import itertools
x = [[1,2],[3,4]]
def iter_tools(*array):
yield list(itertools.product(*array))
print(iter_tools(*x))
当我尝试使用return
而不是yield
时,相同的代码可以正常工作。如何实现一个生成器以获得笛卡尔积?
itertools.product(*array)
已经是一个高效的迭代器了。没有必要将其包装在一个生成器中。所以只需使用itertools.product(*array)
。你的生成器确实起作用,生成器函数返回生成器。看起来你有一个基本的误解。 - undefined