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