Python: eliminar registros de elementos K consecutivos

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)) 
Producción :

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)) 
Producción :

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *