2016-07-28 71 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

相关问题