Grouper recipe
es 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