2016-07-28 70 views
2

下面的行返回一個錯誤:ValueError:解壓縮的值太多 - 是否可以忽略一個值?

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

該函數實際上返回6個值。但在這種情況下,最後一個是無用的(其無)。所以我想只存儲5.

是否可以忽略最後一個值?

+5

爲什麼不添加必要的變量來解壓縮?將它命名爲「未使用」或其他。 – TigerhawkT3

+0

僅僅因爲它看起來更乾淨沒有無用的變量 –

回答

8

您可以使用*rest在Python 3

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

這種方式可以始終確保不會遇到拆包的問題。

+0

OP只想丟棄一個值,所以我不認爲這個語法是必需的(而且它實際上並沒有被丟棄)。 – 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

只是片最後一個出去:

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

編輯TigerhawkT3'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

這已經出現在另外兩個答案中,而你的未格式化。 – TigerhawkT3

+0

當我添加其他解決方案時不存在,但。 –

+0

是的,他們已經在那裏四分鐘了。 – TigerhawkT3

相關問題