我想创建一个类比来表达我的问题。假设我们有20个坑可以种树,我们有6种树可以种。我想得到种植这些树的所有可能的组合。我在图中给出了一个组合示例。下面是我尝试过的实际代码,但给出了MemoryError。但我可以在循环中使用第一个组合,然后再移动到另一个组合。我不需要将整个阵列保存在一个3d阵列中
import itertools
l = [False,True]
a=list(itertools.product(l,repeat=6))
a=list(itertools.product(a,repeat=20))
•树木名称:A、B、C、D、E、F
•G表示无种植园
•我们拥有无限数量的每棵树。所以我们可以在每个坑里种同一棵树
•我们可以让每个孔都不进行铺设
给定示例的表示:
[A]、[G]、[D]、[G]、[G]、[G]、[G]、[G]、[G]、[G]、[G]、[G]、[G]、[G]、[G]、[G]、[G]、[G]、[G]]
整个组合可以在3d numpy数组中,也可以通过for循环迭代每个组合
输出示例:
[A]、[G]、[D]、[G]、[G]、[G]、[G]、[G]、[G]、[G]、[G]、[G]、[G]、[G]、[G]、[G]、[G]、[G]、[G]
[A]、[G]、[D]、[G]、[G]、[G]、[G]、[G]、[G]、[G]、[A]、[G]、[G]、[G]、[G]、[G]、[G]、[G]
[A]、[A]、[A]、[A]、[A]、[A]、[A]、[A]、[A]、[A]、[A]、[A]、[A]、[A]、[A]、[A]、[A]]
一种更简单的方法是使用案例列表对问题建模:
A
->G
然后使用itertools.product()
。可能list(itertools.product())
仍然会给您带来内存错误。在这种情况下,只需使用next()
来拉取后续的组合:相关问题 更多 >
编程相关推荐