我正在尝试编写一个快速函数,它将循环遍历子列表中的元素,并合并子列表(如果它们包含元素)。例如,列表[[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)
我使用了 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)
希望这对你有帮助:)