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))
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