gpt4 book ai didi

python - 将列表中所有相交集联合在一起的 pythonic 方法是什么?

转载 作者:太空狗 更新时间:2023-10-30 02:49:06 25 4
gpt4 key购买 nike

我有一个集合列表,

[set([0, 1, 2]),
set([3, 2]),
set([4, 1]),
set([5, 6]),
set([7, 8])]

我需要将所有相交的部分联合起来,结果如下:

[set([0, 1, 2, 3, 4]),
set([5, 6]),
set([7, 8])]

执行此操作最优雅的方法是什么?我想不出比 n*n 循环更好的了。

最佳答案

这将产生您描述的输出。它应该比 n * n 运行得更好,除非你没有交叉路口,否则应该有一些好处。

mysets = [set([0, 1, 2]),
set([3, 2]),
set([4, 1]),
set([5, 6]),
set([7, 8])]

# Require at least one set in the output.
output = [mysets.pop(0)]

while mysets:
test = mysets.pop(0)
for idx, other in enumerate(output):
if test & other:
output[idx] |= test
break
else:
output.append(test)

# output -> [set([0, 1, 2, 3, 4]), set([5, 6]), set([8, 7])]

关于python - 将列表中所有相交集联合在一起的 pythonic 方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9709311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com