Programa de Python para extraer strings coincidentes de malla

Dada una malla de caracteres, que contiene caracteres faltantes, haga coincidir la string que coincide con la malla.

Ejemplo:

Entrada : test_list = [“geeks”, “best”, “peeks”], mesh = “_ee_s” 
Salida : [‘geeks’, ‘peeks’] 
Explicación : Los elementos según la malla son geeks y peeks.

Entrada : test_list = [“geeks”, “best”, “test”], mesh = “_e_t” 
Salida : [‘best’, ‘test’] 
Explicación : los elementos según la malla son los mejores y los de prueba. 
 

Método #1: Usando loop + all() + len() + zip() 

La combinación de lo anterior se puede utilizar para resolver este problema. En esto, realizamos la tarea de hacer coincidir la malla y cada string usando zip() y all() se usa para verificar todas las strings, len() se usa para probar la malla de coincidencia de longitud de string correcta.

Python3

# Python3 code to demonstrate working of 
# Extract Mesh matching Strings
# Using len() + loop + zip() + all()
  
# initializing list
test_list = ["geeks", "best", "peeks", "for", "seeks"]
  
# printing original list
print("The original list : " + str(test_list))
  
# initializing mesh 
mesh = "_ee_s"
  
res = []
for sub in test_list:
      
    # testing for matching mesh, checking each character and length
    if (len(sub) == len(mesh)) and all((ele1 == "_") or (ele1 == ele2)
       for ele1, ele2 in zip(mesh, sub)):
        res.append(sub)
  
# printing result 
print("The extracted strings : " + str(res))
Producción

The original list : ['geeks', 'best', 'peeks', 'for', 'seeks']
The extracted strings : ['geeks', 'peeks', 'seeks']

Método #2: Usar la comprensión de listas

Esto resuelve el problema de manera similar al método anterior, la única diferencia aquí es que se proporciona una solución de 1 línea. 

Python3

# Python3 code to demonstrate working of 
# Extract Mesh matching Strings
# Using list comprehension
  
# initializing list
test_list = ["geeks", "best", "peeks", "for", "seeks"]
  
# printing original list
print("The original list : " + str(test_list))
  
# initializing mesh 
mesh = "_ee_s"
  
# one liner to solve this problem
res = [sub for sub in test_list if (len(sub) == len(mesh)) and all((ele1 == "_") or (ele1 == ele2)
      for ele1, ele2 in zip(mesh, sub))]
  
# printing result 
print("The extracted strings : " + str(res))
Producción

The original list : ['geeks', 'best', 'peeks', 'for', 'seeks']
The extracted strings : ['geeks', 'peeks', 'seeks']

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 *