Dadas dos listas, la tarea es escribir un programa en Python para extraer todas las strings que son posibles substrings de cualquiera de las strings en otra lista.
Ejemplo:
Entrada: test_list1 = [“Geeksforgeeks”, “mejor”, “para”, “geeks”], test_list2 = [“Geeks”, “ganar”, “o”, “aprender”]
Salida: [‘Geeks’, ‘o’]
Explicación: «Geeks» aparece en la string «Geeksforgeeks» como substring.
Entrada: test_list1 = [“geeksforgeeks”, “mejor”, “4”, “geeks”], test_list2 = [“Geeks”, “ganar”, “o”, “aprender”]
Salida: []
Explicación: no se encontraron substrings.
Método #1: Usar la comprensión de listas
En esto, realizamos la tarea de usar un bucle anidado y probar usando la comprensión de la lista, extrayendo la string si es parte de cualquier substring de otra lista.
Python3
# Python3 code to demonstrate working of # Substring Intersections # Using list comprehension # initializing lists test_list1 = ["Geeksforgeeks", "best", "for", "geeks"] test_list2 = ["Geeks", "win", "or", "learn"] # printing original lists print("The original list 1 is : " + str(test_list1)) print("The original list 2 is : " + str(test_list2)) # using list comprehension for nested loops res = list( set([ele1 for sub1 in test_list1 for ele1 in test_list2 if ele1 in sub1])) # printing result print("Substrings Intersections : " + str(res))
Producción:
La lista original 1 es: [‘Geeksforgeeks’, ‘best’, ‘for’, ‘geeks’]
La lista original 2 es: [‘Geeks’, ‘ganar’, ‘o’, ‘aprender’]
Intersecciones de substrings: [‘o’, ‘Geeks’]
Método n.º 2: usar cualquier() + expresión generadora
En esto, any() se usa para verificar la coincidencia de substrings en cualquiera de las strings de la lista de strings que se van a combinar.
Python3
# Python3 code to demonstrate working of # Substring Intersections # Using any() + generator expression # initializing lists test_list1 = ["Geeksforgeeks", "best", "for", "geeks"] test_list2 = ["Geeks", "win", "or", "learn"] # printing original lists print("The original list 1 is : " + str(test_list1)) print("The original list 2 is : " + str(test_list2)) # any() returns the string after match in any string # as Substring res = [ele2 for ele2 in test_list2 if any(ele2 in ele1 for ele1 in test_list1)] # printing result print("Substrings Intersections : " + str(res))
Producción:
La lista original 1 es: [‘Geeksforgeeks’, ‘best’, ‘for’, ‘geeks’]
La lista original 2 es: [‘Geeks’, ‘ganar’, ‘o’, ‘aprender’]
Intersecciones de substrings: [‘Geeks’, ‘o’]
La complejidad de tiempo y espacio para todos los métodos es la misma:
Complejidad temporal: O(n 2 )
Complejidad espacial: O(n)
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