Programa de Python para dividir strings en strings superpuestas de tamaño k

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *