Если у меня есть функция matchCondition(x)
, как я могу удалить первые n
элементы в списке Python, которые соответствуют этому условию?
Одним из решений является итерация по каждому элементу, пометка для удаления (например, установка его на None
), а затем фильтрация списка с пониманием. Это требует повторного перебора по списку и изменения данных. Есть ли более идиоматический или эффективный способ сделать это?
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)