Programa de Python para extraer strings con al menos un número dado de caracteres de otra lista

Dada una lista que contiene solo elementos de string, la tarea es escribir un programa de Python para extraer todas las strings que tienen caracteres de otra lista dada varias veces. 

Ejemplos:

Entrada : test_list = [“Geeksforgeeks”, “is”, “best”, “for”, “geeks”], char_list = [‘e’, ‘t’, ‘s’, ‘m’, ‘n’], k = 2

Salida: [‘Geeksforgeeks’, ‘best’, ‘geeks’]

Explicación: tiene 1, porque tiene 0 caracteres de la lista, por lo tanto, se omite.

Entrada: test_list = [“Geeksforgeeks”, “is”, “best”, “for”, “geeks”], char_list = [‘t’, ‘s’, ‘m’, ‘n’], K = 2

Salida: [‘Geeksforgeeks’, ‘mejor’]

Explicación: Geeksforgeeks tiene 2 s, y mejor tiene 2 elementos de la lista de personajes.

Método 1: usar la comprensión de listas y la sum()

En esto, realizamos una iteración de caracteres utilizando la comprensión de listas y sum() se usa para verificar la suma de caracteres coincidentes, que, si se encuentra mayor que K, se agrega a la lista de resultados.

Programa:

Python3

# initializing list
test_list = ["Geeksforgeeks", "is", "best", "for", "geeks"]
  
# printing original list
print("The original list is : " + str(test_list))
  
# initializing characters list
char_list = ['e', 't', 's', 'm', 'n']
  
# initializing K
K = 2
  
# sum() computes matching elements frequency
res = [ele for ele in test_list if sum(ch in char_list for ch in ele) >= K]
  
# printing result
print("Filtered Strings : " + str(res))

Producción:

La lista original es: [‘Geeksforgeeks’, ‘is’, ‘best’, ‘for’, ‘geeks’]

Strings filtradas: [‘Geeksforgeeks’, ‘best’, ‘geeks’]

Método 2: Usar filter() , lambda y sum()

En esto, la tarea de filtrado se realiza usando filter(), el resto de las funcionalidades se realizan usando construcciones similares al método anterior.

Programa:

Python3

# initializing list
test_list = ["Geeksforgeeks", "is", "best", "for", "geeks"]
  
# printing original list
print("The original list is : " + str(test_list))
  
# initializing characters list
char_list = ['e', 't', 's', 'm', 'n']
  
# initializing K
K = 2
  
# sum() computes matching elements frequency
# filter() used for task of filtering
res = list(filter(lambda ele: sum(ch in char_list for ch in ele) >= K, test_list))
  
# printing result
print("Filtered Strings : " + str(res))

Producción:

La lista original es: [‘Geeksforgeeks’, ‘is’, ‘best’, ‘for’, ‘geeks’]

Strings filtradas: [‘Geeksforgeeks’, ‘best’, ‘geeks’]

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 *