请考虑以下代码段:
# 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
包含完全零元素吗?
提前致谢!
答案 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