Удалите первые объекты N, которые соответствуют условию в списке Python

Если у меня есть функция 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)
60
задан 20 September 2016 в 17:49

Другие вопросы по тегам:

Похожие вопросы: