A veces, mientras trabajamos con registros de Python, podemos tener un problema en el que necesitamos eliminar registros en función de la presencia de elementos K consecutivos en la tupla. Este tipo de problema es peculiar pero puede tener aplicaciones en dominios de datos. Analicemos ciertas formas en que se puede realizar esta tarea.
Entrada :
test_list = [(4, 5), (5, 6), (1, 3), (0, 0)]
K = 0
Salida : [(4, 5), (5, 6), (1, 3)]Entrada :
test_list = [(4, 5), (5, 6), (1, 3), (5, 4)]
K = 5
Salida : [(4, 5), (5, 6), (1, 3), (5, 4)]
Método n.° 1: usar zip()
la comprensión de listas +
La combinación de las funciones anteriores se puede usar para resolver este problema. En esto, necesitamos combinar dos segmentos consecutivos usando zip() y realizar la comparación en comprensión de lista.
# Python3 code to demonstrate working of # Remove Consecutive K element records # Using zip() + list comprehension # initializing list test_list = [(4, 5, 6, 3), (5, 6, 6, 9), (1, 3, 5, 6), (6, 6, 7, 8)] # printing original list print("The original list is : " + str(test_list)) # initializing K K = 6 # Remove Consecutive K element records # Using zip() + list comprehension res = [idx for idx in test_list if (K, K) not in zip(idx, idx[1:])] # printing result print("The records after removal : " + str(res))
The original list is : [(4, 5, 6, 3), (5, 6, 6, 9), (1, 3, 5, 6), (6, 6, 7, 8)] The records after removal : [(4, 5, 6, 3), (1, 3, 5, 6)]
Método n.° 2: usar any()
la comprensión de lista +
La combinación de las funciones anteriores se puede usar para resolver este problema. En esto, verificamos los elementos consecutivos usando any() y la comprensión de la lista se usa para rehacer la lista.
# Python3 code to demonstrate working of # Remove Consecutive K element records # Using any() + list comprehension # initializing list test_list = [(4, 5, 6, 3), (5, 6, 6, 9), (1, 3, 5, 6), (6, 6, 7, 8)] # printing original list print("The original list is : " + str(test_list)) # initializing K K = 6 # Remove Consecutive K element records # Using any() + list comprehension res = [idx for idx in test_list if not any(idx[j] == K and idx[j + 1] == K for j in range(len(idx) - 1))] # printing result print("The records after removal : " + str(res))
The original list is : [(4, 5, 6, 3), (5, 6, 6, 9), (1, 3, 5, 6), (6, 6, 7, 8)] The records after removal : [(4, 5, 6, 3), (1, 3, 5, 6)]
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