Programa de Python para convertir una lista en un conjunto basado en un elemento común

Dada una lista de listas, la tarea es escribir un programa en Python que pueda convertir cada sublista en un conjunto y combinarlas en sublistas en un solo conjunto si tienen un elemento común. La salida impresa será una lista de conjuntos.

Entrada: test_list = [[15, 14, 12, 18], [9, 5, 2, 1], [4, 3, 2, 1], [19, 11, 13, 12]]

Salida: [{11, 12, 13, 14, 15, 18, 19}, {1, 2, 3, 4, 5, 9}]

Explicación: la lista 1 y la lista 4 tenían 12 en común, por lo tanto, todas se fusionaron en una.

Entrada : test_list = [[15, 14, 12, 18], [9, 5, 2, 1], [4, 3, 2, 1], [19, 11, 13, 22]]

Salida: [{18, 12, 14, 15}, {1, 2, 3, 4, 5, 9}, {11, 19, 13, 22}]

Explicación: la lista 2 y la lista 3 tenían 1, 2 en común, por lo tanto, todas se fusionaron en una.

Método: Usando recursividad y unión()

En esto, realizamos la tarea de hacer que todos los contenedores tengan elementos similares usando union(), dependiendo de las condiciones. La recursividad se utiliza para realizar tareas similares a la mayoría de las listas requeridas.

Ejemplo:

Python3

# utility function
def common_set(test_set):
    for idx, val in enumerate(test_set):
        for j, k in enumerate(test_set[idx + 1:], idx + 1):
  
            # getting union by conditions
            if val & k:
                test_set[idx] = val.union(test_set.pop(j))
                return common_set(test_set)
    return test_set
  
# utility function
  
  
# initializing lists
test_list = [[15, 14, 12, 18], [9, 5, 2, 1], [4, 3, 2, 1], [19, 11, 13, 12]]
  
# printing original list
print("The original list  is : " + str(test_list))
  
test_set = list(map(set, test_list))
  
# calling recursive function
res = common_set(test_set)
  
# printing result
print("Common element groups : " + str(res))

Producción:

La lista original es: [[15, 14, 12, 18], [9, 5, 2, 1], [4, 3, 2, 1], [19, 11, 13, 12]]

Grupos de elementos comunes: [{11, 12, 13, 14, 15, 18, 19}, {1, 2, 3, 4, 5, 9}]

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 *