Dada una string, la tarea es escribir un programa de Python para extraer segmentos de string consecutivos superpuestos de la string original de acuerdo con el tamaño K.
Ejemplo:
Entrada: test_str = ‘Geeksforgeeks’, K = 4
Salida: [‘Geek’, ‘eeks’, ‘eksf’, ‘ksfo’, ‘sfor’, ‘forg’, ‘orge’, ‘rgee’, ‘geek’, ‘eeks’]
Explicación: se emiten secuencias consecutivas superpuestas de 4 tamaños.
Entrada: test_str = ‘Geeksforgeeks’, K = 6
Salida: [‘Geeksf’, ‘eeksfo’, ‘eksfor’, ‘ksforg’, ‘sforge’, ‘forgee’, ‘orgeek’, ‘rgeeks’]
Explicación: se emiten secuencias consecutivas superpuestas de 6 tamaños.
Método 1: Usando islice() + función generadora + join()
En este, las ventanas de tamaño K se extraen usando islice(), y los resultados se obtienen de forma intermedia usando yield. Los resultados finales se unen mediante join().
Python3
# Python3 code to demonstrate working of # Overlapping consecutive K splits # Using islice() + generator function + join() from itertools import islice # generator function def over_slice(test_str, K): itr = iter(test_str) res = tuple(islice(itr, K)) if len(res) == K: yield res for ele in itr: res = res[1:] + (ele,) yield res # initializing string test_str = 'Geeksforgeeks' # printing original string print("The original string is : " + str(test_str)) # initializing K K = 4 # calling generator function res = ["".join(ele) for ele in over_slice(test_str, K)] # printing result print("Overlapping windows : " + str(res))
Producción:
La string original es: Geeksforgeeks
Ventanas superpuestas: [‘Geek’, ‘eeks’, ‘eksf’, ‘ksfo’, ‘sfor’, ‘forg’, ‘orge’, ‘rgee’, ‘geek’, ‘eeks’]
Método 2: Uso de comprensión de listas + división
En este ejemplo, los cortes intermedios se realizan utilizando una operación de corte en una forma más pythonica. Cada ventana se extrae usando notación de corte.
Python3
# Python3 code to demonstrate working of # Overlapping consecutive K splits # Using list comprehension + slicing # initializing string test_str = 'Geeksforgeeks' # printing original string print("The original string is : " + str(test_str)) # initializing K K = 4 # extracting window using slicing res = [test_str[idx:idx + K] for idx in range(len(test_str) - K + 1)] # printing result print("Overlapping windows : " + str(res))
Producción:
La string original es: Geeksforgeeks
Ventanas superpuestas: [‘Geek’, ‘eeks’, ‘eksf’, ‘ksfo’, ‘sfor’, ‘forg’, ‘orge’, ‘rgee’, ‘geek’, ‘eeks’]
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