Python | Conservar K elementos consecutivos

A veces, mientras trabajamos con datos, podemos tener un problema en el que necesitamos seleccionar algunos de los elementos que ocurren K veces consecutivas. Este problema puede ocurrir en muchos dominios. Analicemos ciertas formas en que se puede resolver este problema.

Método n.º 1: Uso groupby()de la comprensión de listas +
Esta tarea se puede realizar utilizando las funcionalidades anteriores. En esto, agrupamos todos los números que ocurren K consecutivamente. Iteramos la lista usando la comprensión de lista.

# Python3 code to demonstrate working of
# Retain K consecutive elements
# using groupby() + list comprehension
from itertools import groupby
  
# initialize list 
test_list = [1, 1, 4, 5, 5, 6, 7, 7, 8]
  
# printing original list 
print("The original list : " + str(test_list))
  
# initialize K 
K = 2
  
# Retain K consecutive elements
# using groupby() + list comprehension
res = [i for i, j in groupby(test_list) if len(list(j)) == K]
  
# printing result
print("The K consecutive elements are : " + str(res))
Producción :

The original list : [1, 1, 4, 5, 5, 6, 7, 7, 8]
The K consecutive elements are : [1, 5, 7]

Método #2: Uso de la comprensión de listas +slice() + groupby()
Esta tarea también se puede realizar utilizando las funciones anteriores. En esto, solo realizamos la agrupación de manera similar a la anterior, pero la forma en que extraemos elementos consecutivos es mediante slice().

# Python3 code to demonstrate working of
# Retain K consecutive elements
# using groupby() + list comprehension + islice()
from itertools import groupby, islice
  
# initialize list 
test_list = [1, 1, 4, 5, 5, 6, 7, 7, 8]
  
# printing original list 
print("The original list : " + str(test_list))
  
# initialize K 
K = 2
  
# Retain K consecutive elements
# using groupby() + list comprehension + islice()
res = [i for i, j in groupby(test_list) if len(list(islice(j, 0, K))) == K]
  
# printing result
print("The K consecutive elements are : " + str(res))
Producción :

The original list : [1, 1, 4, 5, 5, 6, 7, 7, 8]
The K consecutive elements are : [1, 5, 7]

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 *