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