Я, кажется, разработал правильную операцию reduce
, чтобы найти объединение интервалов, только чтобы понять, что reduce
дает вам окончательный результат.Поэтому я посмотрел документацию и понял, что на самом деле я должен использовать accumulate
.
Мне нужен кто-то, кто поможет мне преобразовать это reduce
в accumulate
, поэтому у меня есть промежуточные интервалы
Приведенный ниже код является примером того, как я использовал reduce
.Я предполагаю, что промежуточные значения могут быть сохранены с использованием accumulate
.Я не уверен, возможно ли это вообще. Но я посмотрел на примеры того, как accumulate
дает вам список элементов, где каждый элемент является промежуточным вычисленным результатом.
example_interval = [[1,3],[2,6],[6,10],[15,18]]
def main():
def function(item1, item2):
if item1[1] >= item2[0]:
return item1[0], max(item1[1], item2[1])
else:
return item2
return reduce(function, example_interval)
Чтобы понять проблему,[1, 3], [2, 6]
можно уменьшить до [1, 6]
, поскольку item1[1] >= item2[0]
, [1, 6]
затем берется как item1
, а затем сравнивается с [6,10]
, равным item2
, чтобы получить [1, 10]
.[1, 10]
затем сравнивается с конечным элементом [15, 18]
, в данном случае он не объединяется, поэтому конечный результат равен [1, 10], [15, 18]
.
Я знаю, как решить эту проблему без reduce
и accumulate
. У меня просто есть общий интерес к пониманию того, как я могу использовать accumulate
для репликации этой задачи, где хранятся промежуточные значения.