以下是一个使用循环来拾取并合并列表中重叠部分的示例代码:
def merge_overlapping_lists(lists):
merged = []
for sublist in lists:
if not merged:
merged.append(sublist)
else:
last_merged = merged[-1]
if sublist[0] <= last_merged[1]:
last_merged[1] = max(last_merged[1], sublist[1])
else:
merged.append(sublist)
return merged
# 示例输入
lists = [[1, 3], [2, 6], [8, 10], [15, 18]]
# 预期输出: [[1, 6], [8, 10], [15, 18]]
merged_lists = merge_overlapping_lists(lists)
print(merged_lists)
在上述代码中,merge_overlapping_lists
函数接受一个二维列表 lists
作为输入,表示包含多个子列表的列表。每个子列表都表示一个区间,其中第一个元素是起始位置,第二个元素是结束位置。
代码使用一个循环遍历每个子列表。在循环的每一步中,它检查当前子列表是否与已合并的列表中的最后一个子列表重叠。如果重叠,则更新已合并的列表中的最后一个子列表的结束位置。否则,将当前子列表添加到已合并的列表中。
最后,函数返回已合并的列表。在示例中,输出为 [[1, 6], [8, 10], [15, 18]]
,表示原始列表中重叠的部分已被合并为三个区间。