106 votes

Comment vérifier si une file double ended (deque) est vide

Est-ce que le try-catch est la seule méthode pour le faire?

181voto

Sven Marnach Points 133943

Si d est votre deque, utilisez

if d:
    # non vide
else:
    # vide

Cela convertira implicitement d en un bool, ce qui renvoie True si le deque contient des éléments et False s'il est vide.

3 votes

D'autres techniques comprennent d_empty = False if d else True

1 votes

Vous pouvez également écrire if len(d) == 0 si la conversion implicite est trop mignonne pour vous (et en fait, c'est ce que fait la conversion en booléen sous le capot).

28 votes

if d est la façon canonique pour toutes les collections (tuples, chaînes de caractères, listes, dictionnaires et tous leurs nombreux sous-types).

15voto

Raymond Hettinger Points 231

Il existe deux façons principales :

  1. Les conteneurs peuvent être utilisés comme des booléens (avec False indiquant que le conteneur est vide) :

  2. Les conteneurs en Python ont aussi une méthode __len__() pour indiquer leur taille.

Voici quelques modèles :

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

vide = not d           # Invert the boolean value

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

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

if len(d) == 0:         # Test the size directly
   print('vide')

La dernière technique n'est pas aussi rapide ou succincte que les autres, mais elle a le mérite d'être explicite pour les lecteurs qui ne connaissent pas la valeur booléenne des conteneurs.

D'autres façons sont possibles. Par exemple, l'indexation avec d[0] génère une IndexError pour une séquence vide. J'ai vu cela utilisé quelques fois.

1voto

Hemanta Points 11
de collections import deque

d = deque()

print(True) if len(d) == 0 else print(false)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X