Python | Frecuencia de caracteres consecutivos

A veces, mientras trabajamos con Python, podemos tener un problema en el que necesitamos calcular la frecuencia de los caracteres consecutivos hasta que cambia el carácter. Esto puede tener aplicación en muchos dominios. Analicemos ciertas formas en que se puede realizar esta tarea.

Método #1: Uso de la comprensión de listas + groupby()
Esta es una de las abreviaturas con la ayuda de la cual se puede realizar esta tarea. En esto, empleamos groupby() para agrupar consecutivos para realizar cálculos de frecuencia.

# Python3 code to demonstrate working of 
# Consecutive characters frequency
# Using list comprehension + groupby()
from itertools import groupby
  
# initializing string
test_str = "geekksforgggeeks"
  
# printing original string
print("The original string is : " + test_str)
  
# Consecutive characters frequency
# Using list comprehension + groupby()
res = [len(list(j)) for _, j in groupby(test_str)]
  
# printing result 
print("The Consecutive characters frequency : " + str(res)) 
Producción :

The original string is : geekksforgggeeks
The Consecutive characters frequency : [1, 2, 2, 1, 1, 1, 1, 3, 2, 1, 1]

Método #2: Usando regex
Otra forma de resolver este problema es usando regex. En esto, empleamos la técnica de búsqueda de caracteres regex y encontramos el conteo usando len().

# Python3 code to demonstrate working of 
# Consecutive characters frequency
# Using regex
import re
  
# initializing string
test_str = "geekksforgggeeks"
  
# printing original string
print("The original string is : " + test_str)
  
# Consecutive characters frequency
# Using regex
res = [len(sub.group()) for sub in re.finditer(r'(.)\1*', test_str)]
  
# printing result 
print("The Consecutive characters frequency : " + str(res)) 
Producción :

The original string is : geekksforgggeeks
The Consecutive characters frequency : [1, 2, 2, 1, 1, 1, 1, 3, 2, 1, 1]

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *