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

Python 生成可能的组合并仅获得前50个,python,combinations,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)) 我的输出是: (8 1

我正在寻找一种方法,只获得前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
,使用:


这将从
产品
中获取前50个元素,并将它们转换为一个列表。

您的数组应声明为:
a=array('l',[1,2,5])
。另外,您确定内存问题来自这段代码吗?(
itertools
生成的迭代器应该是有效的)。@adrianp-
itertools
在一个元素接一个元素使用时是有效的,而不是立即转换为列表。@eumiro-right,我错过了这一点,而不是
x,y,x,y..
等,你可以使用
产品(*[x,y]*10))
。这使得列表
[x,y,x,y,…]
,然后
*
基本上将
产品([x,y,x,y…])
变成
产品(x,y,x,y…)
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))