Python: encuentre todas las strings que son substrings de la lista de strings dada

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

Deja una respuesta

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