Dada una string de alfabetos, conviértala en filas numéricas de tamaño K, que contiene el número que es el valor posicional de los caracteres.
Entrada : test_str = ‘geeksforgeek’, K = 4
Salida : [[6, 4, 4, 10], [18, 5, 14, 17], [6, 4, 4, 10]]
Explicación : g está en el sexto posición en el alfabeto, por lo tanto g→ 6 y la string se divide después de cada cuarto carácterEntrada : test_str = ‘geeksforgeek’, K = 3
Salida : [[6, 4, 4], [10, 18, 5], [14, 17, 6], [4, 4, 10]]
Explicación : g es en la sexta posición en el alfabeto, por lo tanto, g→ 6 y la string se divide después de cada tercer carácter
Método 1: Usar loop + index()
En esto, realizamos una iteración de cada carácter usando un bucle y buscamos la posición requerida del carácter en los alfabetos usando index() en una lista de caracteres ordenados.
Python3
# initializing string test_str = 'geeksforgeekscse' # printing original string print("The original string is : " + str(test_str)) # initializing K K = 4 alphabs = "abcdefghijklmnopqrstuvwxyz" res = [] temp = [] for ele in test_str: # finding numerical position using index() temp.append(alphabs.index(ele)) # regroup on K if len(temp) == K: res.append(temp) temp = [] # appending remaining characters if temp != []: res.append(temp) # printing result print("Grouped and Converted String : " + str(res))
Producción:
La string original es: geeksforgeekscse String
agrupada y convertida: [[6, 4, 4, 10], [18, 5, 14, 17], [6, 4, 4, 10], [18, 2, 18, 4 ]]
Método #2: Usar ljust() + ord() + comprensión de lista
En esto, realizamos la tarea de relleno necesario para tener filas de igual longitud usando ljust() , luego obtenemos posiciones alfabéticas numéricas usando ord() , la comprensión de la lista con corte ayuda a convertir la lista en una array K fragmentada.
Python3
from math import ceil # initializing string test_str = 'geeksforgeekscse' # printing original string print("The original string is : " + str(test_str)) # initializing K K = 4 # filling the rear to K size rows temp = test_str.ljust(ceil(len(test_str) / K) * K) # convert to numerical characters temp = [0 if char == ' ' else (ord(char) - 97) for char in temp] # slice and render to matrix res = [temp[idx: idx + K] for idx in range(0, len(temp), K)] # printing result print("Grouped and Converted String : " + str(res))
Producción:
La string original es: geeksforgeekscse String
agrupada y convertida: [[6, 4, 4, 10], [18, 5, 14, 17], [6, 4, 4, 10], [18, 2, 18, 4 ]]
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