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