值错误:太多的值无法解包是否可以忽略一个值?

2024-10-01 17:41:06 发布

您现在位置:Python中文网/ 问答频道 /正文

以下行返回错误:

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

函数实际上返回6个值。但在这种情况下,最后一个是无用的(它没有)。所以我只想储存5个。在

是否可以忽略最后一个值?在


Tags: 函数selftrue错误情况储存个值itemslist
3条回答

您可以使用python3中的*rest。在

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

这样您就可以确保不会遇到解包问题。在

通常使用_来表示不需要的变量。在

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

在迭代一定次数时也经常使用。在

^{pr2}$

python3还为赋值引入了*,类似于*args接受任意数量的参数。要忽略任意数量的参数,只需将它们赋给*_

a, b, c, d, e, *_ = my_func_that_gives_5_or_more_values()

这可以在赋值的任何时候使用;您可以获取第一个和最后一个值,并忽略中间的填充:

>>> a, b, c, *_, x, y, z = range(10)
>>> print(a, b, c, '...', x, y, z)
0 1 2 ... 7 8 9

把最后一个切下来:

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

编辑TigerhawkT3's comment之后:

注意,只有当返回对象支持切片时,这才有效。在

相关问题 更多 >

    热门问题