Programa de Python para obtener todos los segmentos posibles de una string para K número de segmentos

Dada una string, la tarea es escribir un programa en Python para obtener todos los segmentos posibles para un número K de segmentos.

Entrada: test_str = «Gfg4all», K = 3

Salida: [[‘G’, ‘f’, ‘g4all’], [‘G’, ‘fg’, ‘4all’], [‘G’, ‘fg4’, ‘all’], [‘G’, ‘fg4a’, ‘ll’], [‘G’, ‘fg4al’, ‘l’], [‘Gf’, ‘g’, ‘4all’], [‘Gf’, ‘g4’, ‘all’] , [‘Gf’, ‘g4a’, ‘ll’], [‘Gf’, ‘g4al’, ‘l’], [‘Gfg’, ‘4’, ‘all’], [‘Gfg’, ‘4a ‘, ‘ll’], [‘Gfg’, ‘4al’, ‘l’], [‘Gfg4’, ‘a’, ‘ll’], [‘Gfg4’, ‘al’, ‘l’], [ ‘Gfg4a’, ‘l’, ‘l’]]

Explicación: se devuelven los 3 segmentos posibles para construir una string.

Entrada: test_str = «Gfg4all», K = 2

Salida: [[‘G’, ‘fg4all’], [‘Gf’, ‘g4all’], [‘Gfg’, ‘4all’], [‘Gfg4’, ‘all’], [‘Gfg4a’, ‘ll ‘], [‘Gfg4al’, ‘l’]]

Explicación: se devuelven todos los 2 segmentos posibles para construir una string.

Método n. ° 1: usar comprensión de lista + corte + bucle

En esto, los cortes consecutivos se calculan de forma incremental a partir del tamaño 1. El último elemento siempre se divide en 2 en todas las formas en acc. a otras cuerdas. 

Python3

# Python3 code to demonstrate working of
# All possible slices for K length
# Using list comprehension + string slicing + loop
  
# initializing string
test_str = "Gfg4all"
  
# printing original string
print("The original string is : " + str(test_str))
  
# initializing number of slices
K = 3
  
res = [[test_str]]
for idx in range(K - 1):
  
    # slicing initial strings with difference sizes.
    res = [[*strt, end[:y], end[y:]] for *strt, end in res
           for y in range(1, len(end) - K + idx + 2)]
  
# printing result
print("All possible slices for K strings : " + str(res))

Producción:

La string original es: Gfg4all

Todos los segmentos posibles para strings K: [[‘G’, ‘f’, ‘g4all’], [‘G’, ‘fg’, ‘4all’], [‘G’, ‘fg4’, ‘all’], [‘G’, ‘fg4a’, ‘ll’], [‘G’, ‘fg4al’, ‘l’], [‘Gf’, ‘g’, ‘4all’], [‘Gf’, ‘g4’ , ‘todos’], [‘Gf’, ‘g4a’, ‘ll’], [‘Gf’, ‘g4al’, ‘l’], [‘Gfg’, ‘4’, ‘todos’], [‘ Gfg’, ‘4a’, ‘ll’], [‘Gfg’, ‘4al’, ‘l’], [‘Gfg4’, ‘a’, ‘ll’], [‘Gfg4’, ‘al’, ‘ l’], [‘Gfg4a’, ‘l’, ‘l’]]

Método #2: Usando combinaciones() + zip() + comprensión de lista

En esto, las combinaciones se usan para obtener todas las substrings posibles para los rangos calculados usando el corte durante la iteración. 

Python3

# Python3 code to demonstrate working of
# All possible slices for K length
# Using combinations() + zip() + list comprehension
from itertools import combinations
  
# initializing string
test_str = "Gfg4all"
  
# printing original string
print("The original string is : " + str(test_str))
  
# initializing number of slices
K = 3
  
# combinations used to perform all possible slices
res = [[test_str[idx: j] for idx, j in zip([None, *sub], [*sub, None])]
       for sub in combinations(range(1, len(test_str)), K - 1)]
  
# printing result
print("All possible slices for K strings : " + str(res))

Producción:

La string original es: Gfg4all

Todos los segmentos posibles para strings K: [[‘G’, ‘f’, ‘g4all’], [‘G’, ‘fg’, ‘4all’], [‘G’, ‘fg4’, ‘all’], [‘G’, ‘fg4a’, ‘ll’], [‘G’, ‘fg4al’, ‘l’], [‘Gf’, ‘g’, ‘4all’], [‘Gf’, ‘g4’ , ‘todos’], [‘Gf’, ‘g4a’, ‘ll’], [‘Gf’, ‘g4al’, ‘l’], [‘Gfg’, ‘4’, ‘todos’], [‘ Gfg’, ‘4a’, ‘ll’], [‘Gfg’, ‘4al’, ‘l’], [‘Gfg4’, ‘a’, ‘ll’], [‘Gfg4’, ‘al’, ‘ l’], [‘Gfg4a’, ‘l’, ‘l’]]

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 *