Python: combinación de strings de filtro de K substrings

Dada una lista de Strings, extraiga todas las strings que son una combinación de K substrings.

Entrada : test_list = [“geeks4u”, “allbest”, “abcdef”], substr_list = [“s4u”, “est”, “al”, “ge”, “ek”, “def”], K = 3
Salida : [‘geeks4u’]
Explicación : geeks4u compuesto por 3 substr – ge, ek y s4u.

Entrada : test_list = [“geeks4u”, “allbest”, “abcdef”], substr_list = [“s4u”, “est”, “al”, “ge”, “def”, ‘lb’], K = 3
Salida : [‘allbest’]
Explicación : allbest se compone de 3 substr – al, lb y est.

Método #1: Usar permutaciones() + map() + join() + set() + loop

En esto, realizamos esta tarea obteniendo todas las permutaciones posibles de K substrings de la lista de substrings, y luego realizamos la tarea de unir usando unir y map(). El set() se usa para evitar la duplicación. Por último, la coincidencia de la lista de strings se realiza mediante bucle.

Python3

# Python3 code to demonstrate working of 
# Filter Strings  combination of K substrings
# Using permutations() + map() + join() + set() + loop
from itertools import permutations
  
# initializing list
test_list = ["geeks4u", "allbest", "abcdef"]
  
# printing string
print("The original list : " + str(test_list))
  
# initializing substring list
substr_list = ["s4u", "est", "al", "ge", "ek", "def", "lb"]
  
# initializing K 
K = 3
  
# getting all permutations
perms = list(set(map(''.join, permutations(substr_list, r = K))))
  
# using loop to check permutations with list
res = []
for ele in perms:
    if ele in test_list:
        res.append(ele)
  
# printing results 
print("Strings after joins : " + str(res))
Producción

The original list : ['geeks4u', 'allbest', 'abcdef']
Strings after joins : ['geeks4u', 'allbest']

Método #2: Usando la intersection()

Esto utiliza todas las funciones del método anterior, la última tarea de hacer coincidir la lista de permutaciones y la lista original se realiza por intersección.

Python3

# Python3 code to demonstrate working of 
# Filter Strings  combination of K substrings
# Using permutations() + map() + join() + set() + intersection()
from itertools import permutations
  
# initializing list
test_list = ["geeks4u", "allbest", "abcdef"]
  
# printing string
print("The original list : " + str(test_list))
  
# initializing substring list
substr_list = ["s4u", "est", "al", "ge", "ek", "def", "lb"]
  
# initializing K 
K = 3
  
# getting all permutations
perms = set(map(''.join, permutations(substr_list, r = K)))
  
# using intersection() to solve this problem 
res = list(set(test_list).intersection(perms))
  
# printing results 
print("Strings after joins : " + str(res))
Producción

The original list : ['geeks4u', 'allbest', 'abcdef']
Strings after joins : ['geeks4u', 'allbest']

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 *