Dadas dos listas, extraiga todos los pares de strings que son disjuntas, es decir, que no tienen ningún carácter en común.
Entrada : lista_prueba1 = [“haritha”, “es”, “mejor”], lista_prueba2 = [“ella”, “ama”, “papaya”]
Salida : [(‘haritha’, ‘ama’), (‘es’ , ‘papaya’), (‘mejor’, ‘papaya’)]
Explicación : “es” y “papaya” no tienen ningún carácter en común.Entrada : test_list1 = [aa, cab], test_list2 = [“a”, “c”]
Salida : []
Explicación : No hay par de strings separadas.
Enfoque: Usar set() + yield [generador] + reduce() + recursividad
En esto, realizamos tareas para obtener las strings separadas usando set & operation y extrayendo dinámicamente usando yield. Cada string subsiguiente se comprueba en busca de disjuntos mediante la recursividad.
Python3
# Python3 code to demonstrate working of # Disjoint Strings across Lists # Using set() + yield [ generator ] + reduce() + recursion from functools import reduce # helper function def dis_pairs(dpair, res=[]): # checking for disjoint pair if not dpair and not reduce(lambda a, b: set(a) & set(b), res): yield tuple(res) # recurring for subsequent pairs elif dpair: yield from [idx for k in dpair[0] for idx in dis_pairs(dpair[1:], res + [k])] # initializing lists test_list1 = ["haritha", "is", "best"] test_list2 = ["she", "loves", "papaya"] # printing original lists print("The original list 1 is : " + str(test_list1)) print("The original list 2 is : " + str(test_list2)) # calling function res = list(dis_pairs([test_list1, test_list2])) # printing result print("All possible Disjoint pairs : " + str(res))
Producción:
La lista original 1 es: [‘haritha’, ‘es’, ‘mejor’]
La lista original 2 es: [‘ella’, ‘ama’, ‘papaya’]
Todos los pares disjuntos posibles: [(‘haritha’, ‘ ama’), (‘es’, ‘papaya’), (‘mejor’, ‘papaya’)]
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