我从上学到了一些有趣的东西。如果向Python的itertools.product提供了一系列迭代器,这些迭代器将在笛卡尔积开始之前转换为元组。查看了itertools.product的源代码,得出结论:虽然内存中没有存储中间结果,但是在产品迭代开始之前会创建原始迭代器的元组版本。问题:当(元组转换的)输入太大而无法在内存中保存时,是否有方法为笛卡尔产品创建迭代器?微不足道的例子:
import i
import itertoolsall_possibilites = ([''.join(i) for i in itertools.productprintable, repeat = 3)])if comparison in all_possibilities:这是我的代码片段我的目的是生成字母表
我的目标是在nxn矩阵(2 <= n <= 15)中找到对角的任何排列。矩阵由0和1组成。= [[j for j, x in enumerate(row) if x == 1] cart = list(itertools.producttup in cart] return cart
如果矩阵不太大<