1、问题描述
随机生成n个list,合并重叠部分,生成一个全新的m个list(m<=n)
2、源代码
def mergelist(alist): alist.sort(key=lambda x:x[0],reverse=False) #reverse default is False merge_list = [] merge_list.append(alist[0]) for ele in alist: if ele[0] <= merge_list[-1][1]+1: merge_list[-1][1] = max(ele[1],merge_list[-1][1]) else: merge_list.append(ele) return merge_list
3、运行结果
随机输入6个列表
输入列表: [[1, 10], [5, 8], [9, 10], [100, 300], [200, 300], [500, 600]]
输出新合并列表: [[1, 10], [100, 300], [500, 600]]
4、编码感想
随机输入列表集合先排序。排序后列表第一个元素放在新列表中,遍历整个老列表,判断比较新列表的最后一个元素有没跟老列表有没重叠,如有重叠,合并。如没有,则直接添加到新列表中。