Merging a list of time-range tuples that have overlapping time-ranges in python

Merging a list of time-range tuples that have overlapping time-ranges in python

To merge a list of time-range tuples that have overlapping time-ranges in Python, you can use the following approach:

def merge_overlapping_ranges(ranges): if not ranges: return [] # Sort the ranges by their start times sorted_ranges = sorted(ranges, key=lambda x: x[0]) merged_ranges = [sorted_ranges[0]] for current_range in sorted_ranges[1:]: # Check if the current range overlaps with the last merged range if current_range[0] <= merged_ranges[-1][1]: # Merge the current range with the last merged range merged_ranges[-1] = (merged_ranges[-1][0], max(current_range[1], merged_ranges[-1][1])) else: # No overlap, add the current range to the merged ranges merged_ranges.append(current_range) return merged_ranges # Example usage: time_ranges = [(1, 5), (3, 7), (8, 10), (12, 15), (14, 18)] merged_ranges = merge_overlapping_ranges(time_ranges) print(merged_ranges) 

In this code:

  1. The merge_overlapping_ranges function takes a list of time-range tuples as input.

  2. It first sorts the input list by the start times of the ranges to ensure that they are in ascending order.

  3. It initializes a merged_ranges list with the first range from the sorted list.

  4. It iterates through the sorted ranges, checking if the current range overlaps with the last merged range. If there is an overlap, it merges the two ranges. If there is no overlap, it adds the current range to the merged ranges.

  5. The function returns the merged ranges as a list.

When you run the code with the provided example, it will merge overlapping time ranges and produce the following output:

[(1, 7), (8, 10), (12, 18)] 

This code efficiently merges overlapping time ranges in a list of tuples while preserving the original order of non-overlapping ranges.

Examples

  1. "Python merge overlapping time ranges"

    • Description: This query aims to find ways to merge overlapping time ranges efficiently in Python.
    def merge_overlapping_ranges(ranges): ranges.sort(key=lambda x: x[0]) merged = [ranges[0]] for current in ranges[1:]: previous = merged[-1] if current[0] <= previous[1]: previous[1] = max(previous[1], current[1]) else: merged.append(current) return merged 
  2. "Python combine overlapping time ranges"

    • Description: This query seeks methods to combine overlapping time ranges into a consolidated list.
    def combine_overlapping_ranges(ranges): combined = [] for start, end in sorted(ranges): if not combined or combined[-1][1] < start: combined.append([start, end]) else: combined[-1][1] = max(combined[-1][1], end) return combined 
  3. "Python merge time intervals with overlapping periods"

    • Description: This query looks for ways to merge time intervals with overlapping periods using Python.
    from itertools import groupby def merge_time_intervals(intervals): intervals.sort() merged = [] for _, group in groupby(intervals, lambda x: x[0] <= merged[-1][1] if merged else True): merged.extend([min(starts), max(ends)] for starts, ends in [zip(*group)]) return merged 
  4. "Python merge overlapping time spans"

    • Description: This query focuses on merging overlapping time spans in Python.
    def merge_overlapping_spans(spans): spans.sort(key=lambda x: x[0]) merged = [] for start, end in spans: if not merged or start > merged[-1][1]: merged.append([start, end]) else: merged[-1][1] = max(merged[-1][1], end) return merged 
  5. "Python algorithm to merge overlapping time intervals"

    • Description: This query targets Python algorithms designed to merge overlapping time intervals efficiently.
    def merge_overlapping_intervals(intervals): merged = [] for interval in sorted(intervals, key=lambda x: x[0]): if not merged or merged[-1][1] < interval[0]: merged.append(interval) else: merged[-1][1] = max(merged[-1][1], interval[1]) return merged 
  6. "Python merge time ranges with overlaps"

    • Description: This query aims to find Python methods to merge time ranges that have overlaps.
    def merge_time_ranges(ranges): ranges.sort() merged = [] for start, end in ranges: if not merged or start > merged[-1][1]: merged.append([start, end]) else: merged[-1][1] = max(merged[-1][1], end) return merged 
  7. "Python algorithm to combine overlapping intervals"

    • Description: This query seeks an algorithm in Python for combining overlapping intervals into a consolidated list.
    def combine_overlapping_intervals(intervals): intervals.sort(key=lambda x: x[0]) combined = [] for start, end in intervals: if not combined or start > combined[-1][1]: combined.append([start, end]) else: combined[-1][1] = max(combined[-1][1], end) return combined 
  8. "Python merge overlapping time periods"

    • Description: This query looks for ways to merge overlapping time periods efficiently using Python.
    def merge_overlapping_periods(periods): periods.sort() merged = [] for start, end in periods: if not merged or start > merged[-1][1]: merged.append([start, end]) else: merged[-1][1] = max(merged[-1][1], end) return merged 
  9. "Python combine time intervals with overlaps"

    • Description: This query searches for methods to combine time intervals in Python while handling overlaps.
    def combine_overlapping_intervals(intervals): intervals.sort() combined = [] for start, end in intervals: if not combined or start > combined[-1][1]: combined.append([start, end]) else: combined[-1][1] = max(combined[-1][1], end) return combined 
  10. "Python merge time ranges overlapping periods"

    • Description: This query aims to merge time ranges with overlapping periods efficiently in Python.
    def merge_overlapping_periods(ranges): ranges.sort() merged = [] for start, end in ranges: if not merged or start > merged[-1][1]: merged.append([start, end]) else: merged[-1][1] = max(merged[-1][1], end) return merged 

More Tags

asp.net-core-identity non-ascii-characters processstartinfo sap-iq paste android-popupwindow event-bubbling java-12 mysql-error-1242 stage

More Python Questions

More Housing Building Calculators

More Math Calculators

More Dog Calculators

More Gardening and crops Calculators