python解包零元素

时间:2018-03-07 11:23:56

标签: python python-3.x

请考虑以下代码段:

# state that items contains two or more elements
x, y, *_ = items

# state that items contains exactly two elements
x, y, = items

# state that items contains exactly one element
x, = items

我可以用类似的方式声明items包含完全零元素吗?

提前致谢!

2 个答案:

答案 0 :(得分:1)

您可以使用:

() = items
如果ValueError的元素数超过0,

items将会提升。

这在Python 3.6中有效:

>>> items = []
>>> () = items
>>> items = [1,2]
>>> () = items
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 0)

答案 1 :(得分:0)

不是以类似的方式,但您可以尝试访问可迭代的第一项。如果它引发异常,则iterable为空。这种方法以EAFP方式而闻名(更容易要求宽恕而不是许可。)。或者你可以通过检查可迭代的布尔值来检查iterable是否为空。话虽如此,对于迭代器,您可以使用next()方法,对于可以使用索引(__getitem__)等的迭代,

# Easier to ask for forgiveness than permission.
In [41]: try:
    ...:     item[0]
    ...: except:
    ...:     print("empty list")
empty list

#或

In [45]: items = iter([])

In [46]: try:
    ...:     next(items)
    ...: except StopIteration:
    ...:     print("empty list")
    ...:     
empty list