число больше строго на 0.1 или на 1).
Как-то можно это в питоне упростить?
for i in range(0, len(digits) - 1):
k = 0
while Decimal(digits[i + k + 1]) == Decimal(digits[i + k]) + Decimal('0.1') or \
Decimal(digits[i + k + 1]) == int(Decimal(digits[i + k]) + 1):
k += 1
if k == len(digits) - i - 1: break
if k > 0:
print(digits[i:i+k+1])
А можно пример что именно это делает
Ищет возрастающие последовательности.. Первая строка - это исходный список.. Первая последовательность - это вторая строка. Она обрывается, когда после 2.2 идет 1.. Продолжалась бы, если бы после 2.2 шло 2.3 или 3
а зачем, собсна, децимал? В digits лежат строки? (да и в конце вообще decimal -> int, что мешало сразу в int, учитывая то, что там лишь сложение делается перед приведением к инту)
Да, в digits строки.. Ну да, во втором случае лишний десимал.. Ну это не суть.. Вопрос больше, можно ли как-то проще в питоне записать, что извлекаем подсписки, где следующий элемент больше предыдущего на 0.1 или 1?
k тут для чего?
Количество элементов в подсписке
то есть тебе надо найти длину первой попавшейся возрастающей последовательности?
Не первой, а всех Есть допустим список [1, 2, 3, 2, 5, 6, 7] Из него должно извлекаться, если по условию +1: [1, 2, 3] [5, 6, 7] Теперь усложним: Есть допустим список [1, 1.1, 1.2, 2, 4, 1, 4.1, 4.2] Из него должно извлекаться, если по условию +1 от int или +0.1: [1, 1.1, 1.2, 2] [4.1, 4.2]
Кстати, а вот тут почему просто не сравнить два числа? (Можно и без децималов тогда)
Нужно, чтобы не просто больше было, а ровно на 0.1 больше от предыдущего значения ИЛИ на 1 больше от int(предыдущего значения)
Обсуждают сегодня