如何在Python中检查双端队列是否为空?


Answers:


123

如果d是您的双端队列,请使用

if d:
    # not empty
else:
    # empty

如果双端队列包含任何项目并且为空,则将隐式转换d为。boolTrueFalse


3
其他技术包括d_empty = False if d else True
theheadofabroom 2011年

19
if d是所有集合(元组,字符串,列表,字典及其所有子类型)的规范方法。
Jochen Ritzel 2011年

5
@dfan:PEP 8明确建议不要这样做。
Sven Marnach 2011年

2
@ritmatter如我之前所述,官方Python样式指南明确建议不要使用if len(d) == 0,我个人也更简洁if d。我认为坚持使用官方样式指南是有好处的,因为它使Python代码在代码库之间更加一致。
Sven Marnach

2
@RTbecard:这对于Python中的所有集合都是通用的,并且被认为是相当基本的Python习惯用法。该文档的确并未针对每种数据类型都明确指出。任何支持的类型len() 还支持转换为bool
斯文·马纳赫

3

主要有两种方法:

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')

后一种技术并不比其他技术快或简洁,但是它的优点是对于可能不了解容器的布尔值的读者来说是明确的。

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

希望这可以帮助 :-)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.