Python Language itertools.dropwhile


Exemple

itertools.dropwhile vous permet de prendre des éléments d'une séquence après qu'une condition soit devenue la première False .

def is_even(x):
    return x % 2 == 0


lst = [0, 2, 4, 12, 18, 13, 14, 22, 23, 44]
result = list(itertools.dropwhile(is_even, lst))

print(result)
  

Cette sortie [13, 14, 22, 23, 44] .

( Cet exemple est identique à l'exemple de takewhile mais en utilisant dropwhile . )

Notez que le premier nombre qui viole le prédicat (c'est-à-dire la fonction renvoyant une valeur booléenne) is_even est 13 . Tous les éléments avant cela sont éliminés.

La sortie produite par dropwhile est similaire à la sortie générée par le code ci-dessous.

def dropwhile(predicate, iterable):
    iterable = iter(iterable)
    for x in iterable:
        if not predicate(x):
            yield x
            break
    for x in iterable:
        yield x

La concaténation des résultats produits par takewhile et dropwhile produit l'itérable original.

result = list(itertools.takewhile(is_even, lst)) + list(itertools.dropwhile(is_even, lst))