2016-07-28 7 views
2

次の行はエラーを返し:ValueError:アンパックする値が多すぎます - 1つの値を無視できますか?

self.m, self.userCodeToUserNameList, self.itemsList, self.userToKeyHash, self.fileToKeyHash = readUserFileMatrixFromFile(x,True) 

機能は、実際に6つの値を返します。しかし、この場合、最後のものは役に立たない(None)。だから私は5だけを保存したい。

最後の値を無視することはできますか?

+5

アンパックするために必要な変数を追加するだけではどうですか?それを「未使用」と名付けます。 – TigerhawkT3

+0

単に無駄な変数なしでより洗練されたように見えるからです。 –

答えて

8

あなたは常に開梱問題が発生していないことを確認することができますPythonの3

>>> x, y, z, *rest = 1, 2, 3, 4, 5, 6, 7 
>>> x 
1 
>>> y 
2 
>>> rest 
[4, 5, 6, 7] 

この道から*restを使用することができます。

+0

OPは1つの値を破棄したいので、この構文が必要ではないと思います(とにかく実際には破棄されません)。 – TigerhawkT3

+1

これはより一般的なものです。多分、OPが必要になります/値を必要とするか、解凍するための値がもっと...など – Idos

2

_を使用して不要な変数を表すのが一般的です。

a, b, c, d, e, _ = my_func_that_gives_6_values() 

これは、特定の回数反復するときによく使用されます。

[random.random() for _ in range(10)] # gives 10 random values 
0

ただ、最後の1をスライス:これは戻りオブジェクトにスライスをサポートしている場合にのみ動作することを

注:

self.m, self.userCodeToUserNameList, \ 
self.itemsList, self.userToKeyHash, \ 
self.fileToKeyHash = readUserFileMatrixFromFile(x,True)[:-1] 

EDITTigerhawkT3's comment後。

+0

これは、戻されたオブジェクトがスライシングをサポートしている場合にのみ機能します。 – TigerhawkT3

+0

@ TigerhawkT3あなたは絶対に正しいです。私はこれが最善の解決策であると言っているわけではありませんが、それはOPに役立つかもしれません。そして、他の方法は既に答えられているので、それは含まれていなかったのです – BusyAnt

+0

@ TigerhawkT3回答が編集されました。 – BusyAnt

-1

だけでは、 '_' ここ

self.m, 
    self.userCodeToUserNameList, 
    self.itemsList, 
    self.userToKeyHash, 
    self.fileToKeyHash, 
    _ = readUserFileMatrixFromFile(x,True) 

'_' 使い捨て変数を使用故意に無視されます。

+0

これはもう2つの回答に存在し、あなたの書式は未定義です。 – TigerhawkT3

+0

私は他のソリューションを追加したときにまだ存在しませんでした。 –

+0

はい、彼らはすでに4分間そこにいました。 – TigerhawkT3

関連する問題