如何使用生成器在Python中获得笛卡尔积?

问题描述 投票:0回答:1

我正在尝试获取多个数组的笛卡尔积,但是数组很大,我正在尝试优化内存使用率。我已经尝试通过使用以下代码来实现生成器,但是它只是返回在某个位置存在一个生成器。

x = [[1,2],[3,4]]

def iter_tools(*array):
    yield list(itertools.product(*array))

print(iter_tools(*x))

当我尝试相同的代码但用return而不是yield时,它可以正常工作。如何通过生成器来获得笛卡尔积?

python iteration generator cartesian-product
1个回答
-1
投票

如果要从笛卡尔乘积中生成单个项,则需要遍历该乘积:

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)

© www.soinside.com 2019 - 2024. All rights reserved.