PYTHON 函数拷贝问题

编辑 / 发布于2025-09-29 / 更新于2025-09-29 / 阅读 1

python函数,传递进来的参数可能会被改变,需要deepcopy保证改变的是复制后的参数

初始代码

def merge_intervals(_intervals):
    """
    Merge overlapping intervals.
    Args:
        _intervals: list of [start, end]
    Returns:
        list of merged non-overlapping intervals
    """
    if not _intervals:
        return []

    # 按 start 排序
    intervals = sorted(_intervals, key=lambda x: x[0])

    merged = [intervals[0]]
    for current in intervals[1:]:
        last = merged[-1]
        if current[0] <= last[1]:
            # overlap: merge
            last[1] = max(last[1], current[1])
        else:
            merged.append(current)

    return merged

修改后的


def merge_intervals(_intervals):
    """
    intervals: list of [start, end]
    Returns merged non-overlapping list of intervals.
    """
    if not _intervals:
        return []
    # sort by start
    intervals = copy.deepcopy(_intervals)
    intervals.sort()
    merged = [intervals[0]]
    for current in intervals[1:]:
        last = merged[-1]
        if current[0] <= last[1]:
            # overlap: merge
            last[1] = max(last[1], current[1])
        else:
            merged.append(current)
    return merged