Crea una lista de números únicos aplicando cierre transitivo
Tengo una lista de tuplas (cada tupla consta de 2 números) como:
array = [(1, 2), (1, 3), (2, 4), (5, 8), (8, 10)]
Digamos que estos números son identificadores de algunos objetos db (registros) y dentro de una tupla, hay identificadores de objetos duplicados. Lo que significa que 1 y 2 están duplicados. 1 y 3 están duplicados, lo que significa que 2 y 3 también están duplicados.
si a == b y b == c entonces a == c
Ahora quiero fusionar todos estos ID de objetos duplicados en una sola tupla como esta:
output = [(1, 2, 3, 4), (5, 8, 10)]
Sé que puedo hacer esto usando bucles y coincidencias redundantes. Solo quiero una solución mejor con bajo procesamiento / cálculos (si hay alguno).