如何在Python中检查deque是否为空?

Ily*_*gin 59 python

如何在Python中检查deque是否为空?

Sve*_*ach 93

如果d是你的双端队员,请使用

if d:
    # not empty
else:
    # empty
Run Code Online (Sandbox Code Playgroud)

这将隐式转换d为a bool,True如果deque包含任何项目并且False它是空的,则会产生.

  • `if d`是所有集合的元数方式(元组,字符串,列表,dicts及其所有子类型). (12认同)
  • 其他技术包括`d_empty = False if if else True` (3认同)
  • @dfan:[PEP 8](http://www.python.org/dev/peps/pep-0008/)明确表示不鼓励这样做. (3认同)
  • @RTbecard:这对于 Python 中的_all_集合来说很常见,并且被认为是相当基本的 Python 习惯用法。该文档确实没有明确指出每种数据类型。任何支持 `len()` 的类型[也支持转换为 `bool`](https://docs.python.org/3/reference/datamodel.html#object.__bool__)。 (3认同)
  • @ritmatter 正如我之前所说,官方 Python 风格指南明确不鼓励 `if len(d) == 0`,我个人也更喜欢更简洁的 `if d`。我认为坚持使用官方风格指南是有好处的,因为它使 Python 代码跨代码库更加一致。 (2认同)

Ray*_*ger 10

主要有两种方式:

  1. 容器可以用作布尔值(与 False指示容器为空):

  2. Python 中的容器也有一种__len__()指示其大小的方法。

这里有一些模式:

non_empty = bool(d)     # Coerce to a boolean value

empty = not d           # Invert the boolean value

if d:                   # Test the boolean value
    print('non-empty')

while d:                # Loop until empty
    x = d.pop()
    process(x)

if len(d) == 0:         # Test the size directly
   print('empty')
Run Code Online (Sandbox Code Playgroud)

后一种技术不像其他技术那样快速或简洁,但对于可能不知道容器的布尔值的读者来说,它确实具有明确的优点。

其他方式也是可能的。例如,索引 with为空序列d[0]引发IndexError。我已经看到这个使用了几次。