我正在尝试获取多个数组的笛卡尔积,但是数组很大,我正在尝试优化内存使用率。我已经尝试通过使用以下代码来实现生成器,但是它只是返回在某个位置存在一个生成器。
x = [[1,2],[3,4]]
def iter_tools(*array):
yield list(itertools.product(*array))
print(iter_tools(*x))
当我尝试相同的代码但用return
而不是yield
时,它可以正常工作。如何通过生成器来获得笛卡尔积?
如果要从笛卡尔乘积中生成单个项,则需要遍历该乘积:
import itertools
x = [[1,2],[3,4]]
def iter_tools(*array):
for a in itertools.product(*array):
yield a
for a in iter_tools(*x):
print(a)