2016-06-20 8 views
-3

この質問は繰り返し繰り返されますが、この特定の問題を扱うものは見当たりません。私はnumpyの配列の長さをとり、この機能を持って、その後、クロス積取りますItertoolsの製品ValueError:アンパックする値が多すぎる(期待値2)

def solve(tab, vacios): 
    if vacios == 0: 
     return is_valid(tab) #Not important here 
    large = len(tab) 
    for fila, col in product(range(large), repeat=(large-1)): 

をしかし、私はこのエラーを取得する:

ValueError: too many values to unpack (expected 2) 

私は本当に何をするか分かりません、あなたが私を助けることができれば、それはすばらしいでしょう、ありがとう!

答えて

2

それはあなたがrepeat引数を設定したものですので、あなたは、各反復large-1値の組み合わせを生産している:

product(range(large), repeat=(large-1): 

が、2つの変数、filacolに値を開梱されています

for fila, col in product(range(large), repeat=(large-1)): 

長さが3以外のtabの値を渡すと、解凍する値の数は常に正しくありません。例えば

len(tab)が4であれば、あなたは長さ3のタプルを生成:

>>> from itertools import product 
>>> large = 4 
>>> list(product(range(large), repeat=large - 1)) 
[(0, 0, 0), (0, 0, 1), (0, 0, 2), (0, 0, 3), (0, 1, 0), (0, 1, 1), (0, 1, 2), (0, 1, 3), (0, 2, 0), (0, 2, 1), (0, 2, 2), (0, 2, 3), (0, 3, 0), (0, 3, 1), (0, 3, 2), (0, 3, 3), (1, 0, 0), (1, 0, 1), (1, 0, 2), (1, 0, 3), (1, 1, 0), (1, 1, 1), (1, 1, 2), (1, 1, 3), (1, 2, 0), (1, 2, 1), (1, 2, 2), (1, 2, 3), (1, 3, 0), (1, 3, 1), (1, 3, 2), (1, 3, 3), (2, 0, 0), (2, 0, 1), (2, 0, 2), (2, 0, 3), (2, 1, 0), (2, 1, 1), (2, 1, 2), (2, 1, 3), (2, 2, 0), (2, 2, 1), (2, 2, 2), (2, 2, 3), (2, 3, 0), (2, 3, 1), (2, 3, 2), (2, 3, 3), (3, 0, 0), (3, 0, 1), (3, 0, 2), (3, 0, 3), (3, 1, 0), (3, 1, 1), (3, 1, 2), (3, 1, 3), (3, 2, 0), (3, 2, 1), (3, 2, 2), (3, 2, 3), (3, 3, 0), (3, 3, 1), (3, 3, 2), (3, 3, 3)] 

2repeatをハードまたは変数の固定数に値の可変数を解凍しようとしないのどちらか。

+0

大きな値に設定して固定しました。ありがとうございます。 –

関連する問題