Python: agrupación de elementos emparejados

A veces, mientras trabajamos con registros de Python, podemos tener un problema en el que tenemos una lista de tuplas como datos y deseamos agrupar todos los elementos que forman una string, es decir, son pares indirectos entre sí o son componentes conectados. Este tipo de problema puede ocurrir en dominios como la programación competitiva. Vamos a discutir cierta forma en que se puede realizar esta tarea.

Entrada : test_list = [(1, 3), (4, 5)]
Salida : []

Entrada : test_list = [(1, 3), (3, 5)]
Salida : [{1, 3, 5}]

Método: Usar bucle +set() + intersection()
La combinación de las funcionalidades anteriores se puede usar para resolver este problema. En esto, iteramos por todos los elementos y luego por todos los elementos que ocurren después de eso en el ciclo anidado. Se realiza la intersección de elementos, y si algún elemento se encuentra similar, es decir, tamaño >= 0, entonces la tupla se fusiona en una string similar.

# Python3 code to demonstrate working of 
# Paired elements grouping
# Using loop + set() + intersection()
  
# initializing list
test_list = [(1, 3), (4, 5), (1, 7), (3, 4), (7, 8)]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Paired elements grouping
# Using loop + set() + intersection()
res = []
for sub in test_list:
    idx = test_list.index(sub)
    sub_list = test_list[idx + 1:]
    if idx <= len(test_list) - 2:
        for ele in sub_list:
            intrsct = set(sub).intersection(set(ele))
            if len(intrsct) > 0:
                res.append(set(sub + ele))
                  
# printing result 
print("The grouped list : " + str(res)) 
Producción :

The original list is : [(1, 3), (4, 5), (1, 7), (3, 4), (7, 8)]
The grouped list : [{1, 3, 7}, {1, 3, 4}, {3, 4, 5}, {8, 1, 7}]

Publicación traducida automáticamente

Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *