2

条件付きの可能な組み合わせ (固定長で 20) の最初の 50 のみを取得する方法を探していますが、探しているものが見つからないようです。以下に例を示します。

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 に答える