Dividir una string en partes iguales (mero en Python)

Grouper recipees un conjunto de herramientas ampliado creado con un elemento existente itertool como bloques de construcción. Recopila datos en fragmentos o bloques de longitud fija.

Itertools existentes utilizadas
izip_longest(*iterables[, fillvalue]): Cree un iterador que agregue elementos de cada uno de los iterables. Si los iterables tienen una longitud desigual, los valores faltantes se completan con fillvalue. La iteración continúa hasta que se agota el iterable más largo.

Actuación:

  • Las herramientas extendidas ofrecen el mismo alto rendimiento que el conjunto de herramientas subyacente.
  • El rendimiento superior de la memoria se mantiene procesando los elementos de uno en uno en lugar de llevar todo el iterable a la memoria de una sola vez.
  • El volumen del código se mantiene pequeño al vincular las herramientas en un estilo funcional que ayuda a eliminar las variables temporales.
  • La alta velocidad se mantiene al preferir bloques de construcción «vectorizados» sobre el uso de bucles for y generadores que incurren en una sobrecarga del intérprete.

Ejemplos:

Input : str = ABCDEFG, l = 3
Output : ABC DEF Gxx
Explanation: 
Grouping characters of string in set of 3: ABC DEF Gxx.
'x' is added to the set which doesn't have 3 elements in it. 

Input : str = GEEKSFORGEEKS, l = 5
Output : GEEKS FORGE EKSxx

 
A continuación se muestra el código Python3:

# Python3 code for the grouper recipe
  
# import the existing itertool izip_longest
from itertools import izip_longest
  
# function for the grouper recipe
def grouper(iterable, n, fillvalue ='x'):
      
    # create 'n'-blocks for collection
    args = [iter(iterable)] * n
      
    # collect data into fixed length blocks of
    # length 'n' using izip_longest and store
    # result as a list
    ans = list(izip_longest(fillvalue = fillvalue, *args))
      
    # (optional) loop to convert ans to string
    t = len(ans)
    for i in range(t):
        ans[i] = "".join(ans[i])
      
    # return ans as string    
    return " ".join(ans)    
  
  
# Driver code
s = "ABCDEFG"
k = 3
  
result = grouper(s, k)
print(result)    

Producción:

ABC DEF Gxx

Publicación traducida automáticamente

Artículo escrito por adisakshya 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 *