生成可能的组合并仅获得前50个

use*_*764 2 python combinations

我正在寻找一种方法来获得前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))
Run Code Online (Sandbox Code Playgroud)

我的输出是:

(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)
.
.
Run Code Online (Sandbox Code Playgroud)

等等..

我已经遇到了内存错误.我认为这有太多组合,所以我只想获得前50名.有办法吗?

提前致谢!

eum*_*iro 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))
Run Code Online (Sandbox Code Playgroud)

这将获取前50个元素product并将它们转换为列表.