Я работаю над интересной проблемой Python:
Учитывая список целых чисел, бактерий и положительной целочисленной константы, K, если два элемента i и j соответствуют критериям, которые:
j < i <= j + K
разработать функцию, чтобы заставить меня остаться и удалить j, и вернуть минимально возможное количество элементов в списке.
Функция: micro_world(bacteria, K)
Например,,
bacteria = [101, 53, 42, 102, 101, 55, 54]
K = 1
Конечный результат должен быть
[42,102,55]
, и поэтому должно быть возвращено 3.
Аналогично
micro_world([101, 53, 42, 102, 101, 55, 54], 1)
даст мнерезультат 3
micro_world([20, 15, 10, 15, 20, 25], 5)
даст мне результат 1
Я думаю об использовании списочного понимания для фильтрации элементов, которые не соответствуют вышеуказанному критерию, следовательно, получаяэлементы я хочу.Но я не уверен, что делать с этим, так как он включает отношения между каждым элементом в списке.
result = [ i for i in bacteria if ... ]
Что я буду использовать для своего оператора if?
Если этоне очень хороший способ, что мне делать вместо этого?
Спасибо.
Редактировать: Оба ответа дали мне очень хорошие инструкции.Но есть только одна маленькая вещь о повторяющихся значениях в списке бактерий.Например, если входные данные
bacteria = [3, 3]
, даже если это всего лишь один фрагмент, результатом будет 2, так как 3!> 3, следовательно, ни один из них не будет удален.