Python | Agrupación de elementos consecutivos en lista

A veces, mientras trabajamos con listas de Python, podemos tener un problema en el que necesitemos agrupar los elementos de la lista en función de su respectiva consecutividad. Este tipo de problema puede ocurrir durante el manejo de datos. Vamos a discutir cierta forma en que se puede realizar esta tarea.

Método: Uso enumerate() + groupby()de la función + generador + lambda
Esta tarea se puede realizar mediante la combinación de las funciones anteriores. En esto, creamos una función generadora, en la que pasamos la lista a cuyos elementos de índice se accede usando enumerate()y agrupados por elementos consecutivos usando groupby()y lambda. Funciona solo con Python2

# Python code to demonstrate working of
# Consecutive elements grouping list
# using enumerate() + groupby() + generator function + lambda
import itertools
  
# Utility Generator Function
def groupc(test_list):
    for x, y in itertools.groupby(enumerate(test_list), lambda (a, b): b - a):
        y = list(y)
        yield y[0][1], y[-1][1]
  
# initialize list
test_list = [1, 2, 3, 6, 7, 8, 11, 12, 13]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Consecutive elements grouping list
# using enumerate() + groupby() + generator function + lambda
res = list(groupc(test_list))
  
# printing result
print("Grouped list is : " + str(res))
Producción :

The original list is : [1, 2, 3, 6, 7, 8, 11, 12, 13]
Grouped list is : [(1, 3), (6, 8), (11, 13)]

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 *