python通过比较前一对的第二个数字和下一个对的第一个编号,在列表中的子列表中列出对

2021-05-16 07:06:19 发布

您现在位置:Python中文网/ 问答频道 /正文

[[[0, 2], [2, 9]], [[3, 7], [7, 9], [9, 12], [15, 17]], [[4, 6]]]

我需要遍历这个列表对的子列表,并检查子列表中的下一个对的第一个编号是否与前一个对的第二个编号相同。如果是相同的,合并。在

所以它需要做的是合并[0, 2]和{}来得到[0, 9],只合并{}得到{},但不要碰{},所以第二个子列表子列表最终将变成{} 最后,主列表变成:

^{pr2}$

我该怎么做?我试过以下方法,但没用:

def merge(lst_of_lsts):
    res = []
    for sublist in lst_of_lsts:
        for i, ressublists in enumerate(res):
            if sublist[1]==ressublists[0]:
                res[i] += ([sublist[0],ressublists[-1]])
                break
        else:
            res.append(sublist)
    return res
1条回答
网友
1楼 ·

从上面的链接:

def merge(times):
    saved = list(times[0])
    for st, en in sorted([sorted(t) for t in times]):
        if st <= saved[1]:
            saved[1] = max(saved[1], en)
        else:
            yield list(saved)
            saved[0] = st
            saved[1] = en
    yield list(saved)

>>>mylist = [[[0, 2], [2, 9]], [[3, 7], [7, 9], [9, 12], [15, 17]], [[4, 6]]]
>>>[list(merge(i)) for i in mylist]
[[[0, 9]], [[3, 12], [15, 17]], [[4, 6]]]

相关问题