我正在寻找一种方法来获得可能的组合中的前 50 个(20 个固定长度)与条件,但我似乎无法找到我正在寻找的东西。我在下面有一个例子。
import itertools
a = array([1,2,5])
b = array([8,9,10])
c = 0
if c == 1:
x = a
y = b
else:
x = b
y = a
mylist = list(itertools.product(x,y,x,y,x,y,x,y,x,y,x,y,x,y,x,y,x,y,x,y))
我的输出是:
(8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1)
(8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 2)
(8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 5)
(8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 2 8 1)
(8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 2 8 2)
(8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 2 8 5)
.
.
等等..
我已经遇到了内存错误。我认为这有太多组合,所以我只想获得前 50 个。有办法吗?
提前致谢!
最佳答案
继续使用 itertools
,使用 islice
:
list(itertools.islice(itertools.product(x,y,x,y,x,y,x,y,x,y,x,y,x,y,x,y,x,y,x,y), 50))
这从 product
中获取前 50 个元素并将它们转换成一个列表。
关于python - 生成可能的组合并仅获得前 50 个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16014484/