itertools.groupby en Python
Colapsar elementos iguales consecutivos en grupos.
import itertools
texto = "aaabbbccd"
corridas = [(ch, len(list(grupo)))
for ch, grupo in itertools.groupby(texto)]
personas = [("nz", "kiri"), ("nz", "tane"), ("au", "riley")]
por_pais = {}
for pais, grupo in itertools.groupby(personas, key=lambda p: p[0]):
por_pais[pais] = [nombre for _, nombre in grupo]
Cómo funciona
groupby(texto)produce cada corrida y sus miembros.- Contar el grupo da la codificación run-length.
- Una función
keyagrupa registros por un campo.
Palabras clave y builtins usados aquí
forlambdalenlist
El intento, en números
- Líneas
- 10
- Caracteres a escribir
- 308
- Tokens
- 106
- Ritmo de tres estrellas
- 105 tpm
Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 61 segundos.
Paso 4 de 5 en Generadores e itertools; paso 13 de 53 en Python pythónico.