合并包含公共元素的子列表

Hel*_*llo 5 python

我正在尝试编写一个快速函数,它将循环遍历子列表中的元素,并合并子列表(如果它们包含元素)。例如,列表[[0, 3], [3, 4], [5, 6]]应该合并到[[0, 3, 4], [5, 6]].子列表可以是任意大小,并且每个子列表可以具有不同的大小,因此可以包含许多元素。

到目前为止我的代码(不起作用)如下所示。出现的错误是:slice indices must be integers or None or have an __index__ method

def join_clusters(clusters):
    for cluster in clusters:
        for j in cluster:
            for k in clusters[cluster:]:
                for h in k:
                    if j == h:
                        cluster.append(k)
                        clusters.pop(k)
                        return clusters
Run Code Online (Sandbox Code Playgroud)

Tom*_*ler 1

我使用了 while 循环来更轻松地引用列表中的下一个集群

def join_clusters(clusters):
    idx = 0
    while idx < len(clusters) - 1:
        for element in clusters[idx]:
            if element in clusters[idx + 1]:
                clusters[idx].remove(element)
                clusters[idx] = clusters[idx] + clusters[idx + 1]                
                del(clusters[idx + 1])
                break
        idx = idx + 1
    return clusters
Run Code Online (Sandbox Code Playgroud)

希望这对你有帮助:)