用法:
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 itertools.permutations用法及代码示例
- Python itertools.pairwise用法及代码示例
- Python itertools.takewhile用法及代码示例
- Python itertools.compress用法及代码示例
- Python itertools.dropwhile用法及代码示例
- Python itertools.repeat用法及代码示例
- Python itertools.combinations_with_replacement用法及代码示例
- Python itertools.groupby()用法及代码示例
- Python itertools.repeat()用法及代码示例
- Python itertools.count用法及代码示例
- Python itertools.starmap用法及代码示例
- Python itertools.filterfalse用法及代码示例
- Python itertools.chain.from_iterable用法及代码示例
- Python itertools.groupby用法及代码示例
- Python itertools.zip_longest用法及代码示例
- Python itertools.accumulate用法及代码示例
- Python itertools.tee用法及代码示例
- Python itertools.combinations用法及代码示例
- Python itertools.chain用法及代码示例
- Python itertools.cycle用法及代码示例
注:本文由纯净天空筛选整理自python.org大神的英文原创作品 itertools.product。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。