当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python itertools.product用法及代码示例


用法:

itertools.product(*iterables, repeat=1)

输入迭代的笛卡尔积。

大致相当于生成器表达式中的嵌套for-loops。例如,product(A, B) 返回与 ((x,y) for x in A for y in B) 相同的结果。

嵌套循环像里程表一样循环,每次迭代时最右边的元素都会前进。此模式创建一个字典顺序,因此如果输入的可迭代对象已排序,则产品元组将按排序顺序发出。

要计算迭代与自身的乘积,请使用可选的 repeat 关键字参数指定重复次数。例如,product(A, repeat=4)product(A, A, A, A) 的含义相同。

这个函数大致相当于下面的代码,只是实际的实现不会在内存中建立中间结果:

def product(*args, repeat=1):
    # product('ABCD', 'xy') --> Ax Ay Bx By Cx Cy Dx Dy
    # product(range(2), repeat=3) --> 000 001 010 011 100 101 110 111
    pools = [tuple(pool) for pool in args] * repeat
    result = [[]]
    for pool in pools:
        result = [x+[y] for x in result for y in pool]
    for prod in result:
        yield tuple(prod)

product() 运行之前,它完全消耗输入的可迭代对象,将值池保存在内存中以生成产品。因此,它仅对有限输入有用。

相关用法


注:本文由纯净天空筛选整理自python.org大神的英文原创作品 itertools.product。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。