Python合并列表中子列表中的配对列表,通过比较前一对的第二个数字与后一对的第一个数字。

2024-03-28 12:38:34 发布

您现在位置: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

Tags: of方法in列表fordefresmerge
1条回答
网友
1楼 · 发布于 2024-03-28 12:38:34

从上面的链接:

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]]]

相关问题 更多 >