Python – Frecuencias máximas de elementos consecutivos

A veces, mientras trabajamos con listas de Python, podemos tener un problema en el que necesitamos extraer las frecuencias máximas de elementos consecutivos. Este tipo de problema puede ocurrir como aplicación en muchos dominios, como la programación día a día y la programación competitiva. Analicemos ciertas formas en que se puede realizar esta tarea.

Entrada : test_list = [7, 6, 7, 7]
Salida : {7: 2, 6: 1}

Entrada : test_list = [7, 7, 7]
Salida : {7: 3}

Método n.º 1: Usar loop +groupby()
La combinación de las funciones anteriores se puede usar para realizar esta tarea. En esto, agrupamos todos los elementos consecutivos y luego generamos el diccionario de frecuencias máximas utilizando la comparación de claves de diccionario con el máximo actual.

# Python3 code to demonstrate working of 
# Consecutive elements maximum frequencies
# Using loop + groupby()
from itertools import groupby
  
# initializing list
test_list = [5, 6, 7, 7, 6, 6, 5, 7]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Consecutive elements maximum frequencies
# Using loop + groupby()
res = {}
for key, val in groupby(test_list):
    sub = sum(1 for _ in val)
    if res.get(key, float('-inf')) < sub:
        res[key] = sub
  
# printing result 
print("The maximum frequencies : " + str(res)) 
Producción :

The original list is : [5, 6, 7, 7, 6, 6, 5, 7]
The maximum frequencies : {5: 1, 6: 2, 7: 2}

Método #2: Usarmax() + list comprehension + set() + groupby()
La combinación de las funciones anteriores se puede usar para resolver este problema en particular. En esto, usamos la comprensión de listas para realizar comparaciones y el elemento máximo se encuentra usando max().

# Python3 code to demonstrate working of 
# Consecutive elements maximum frequencies
# Using max() + list comprehension + set() + groupby()
from itertools import groupby
  
# initializing list
test_list = [5, 6, 7, 7, 6, 6, 5, 7]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Consecutive elements maximum frequencies
# Using max() + list comprehension + set() + groupby()
temp = list(set(test_list))
res = [{ele : max([len(list(val)) for key, val in groupby(test_list)
                                  if ele == key])} for ele in temp]
  
# printing result 
print("The maximum frequencies : " + str(res)) 
Producción :

The original list is : [5, 6, 7, 7, 6, 6, 5, 7]
The maximum frequencies : [{5: 1}, {6: 2}, {7: 2}]

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 *