Python | Agrupar elementos de lista consecutivos con tolerancia

A veces, es posible que necesitemos agrupar la lista de acuerdo con los elementos consecutivos de la lista. Pero una variación útil de esto también puede ser un caso en el que necesitamos considerar un nivel de tolerancia, es decir, permitir un valor de salto entre números y no ser exactamente consecutivos, pero se permite una «brecha» entre números. Analicemos un enfoque en el que se puede realizar esta tarea.

Método: Uso del generador
El método bruto para realizar esta tarea. Usando loop y generador, uno puede realizar esta tarea. El operador de rendimiento se ocupa del corte y, por lo tanto, este problema también se resuelve mediante una pequeña verificación de la tolerancia.

# Python3 code to demonstrate working of
# Group consecutive list elements with tolerance
# Using generator
  
# helper generator
def split_tol(test_list, tol):
    res = []
    last = test_list[0]
    for ele in test_list:
        if ele-last > tol:
            yield res
            res = []
        res.append(ele)
        last = ele
    yield res
  
# initializing list
test_list = [1, 2, 4, 5, 9, 11, 13, 24, 25, 26, 28]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Group consecutive list elements with tolerance
# Using generator
res = list(split_tol(test_list, 2))
  
# printing result 
print("The splitted list is : " + str(res))
Producción :

The original list is : [1, 2, 4, 5, 9, 11, 13, 24, 25, 26, 28]
The splitted list is : [[1, 2, 4, 5], [9, 11, 13], [24, 25, 26, 28]]

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 *