Si j'ai une fonction matchCondition(x)
, comment puis-je supprimer les premiers éléments n
d'une liste Python qui correspondent à cette condition?
Une solution consiste à parcourir chaque élément, à le marquer pour le supprimer (par exemple, en le définissant sur None
), puis à filtrer la liste avec une compréhension. Cela nécessite de parcourir deux fois la liste et de transformer les données. Existe-t-il un moyen plus idiomatique ou plus efficace de procéder?
n = 3
def condition(x):
return x < 5
data = [1, 10, 2, 9, 3, 8, 4, 7]
out = do_remove(data, n, condition)
print(out) # [10, 9, 8, 4, 7] (1, 2, and 3 are removed, 4 remains)