2

我正在寻找一种方法来获得前 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个。有没有办法做到这一点?

提前致谢!

4

1 回答 1

6

留下来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))

这会从 中获取前 50 个元素product并将它们转换为列表。

于 2013-04-15T11:56:18.143 回答