Python | Eliminar elementos con frecuencia como máximo K

Hay muchos métodos que se pueden emplear para realizar la eliminación en la lista. Ya sea función de eliminación, función emergente y muchas otras funciones. Pero la mayoría de las veces, no solemos lidiar con la simple eliminación, sino con ciertas restricciones. Este artículo analiza ciertas formas en las que podemos eliminar solo aquellos elementos que ocurren menos de K veces.

Método #1: Usar la comprensión de listas +count()
La idea aplicada aquí es construir una nueva lista usando la comprensión de listas e insertar solo aquellos elementos que ocurren más de K veces. La operación de conteo se realiza con la ayuda de la función de conteo.

# Python3 code to demonstrate
# remove elements less than and equal K 
# using list comprehension + count()
  
# initializing list
test_list = [1, 4, 3, 2, 3, 3, 2, 2, 2, 1]
  
# printing original list
print("The original list : " + str(test_list))
  
# initializing K
K = 2
  
# using list comprehension + count()
# remove elements less than K 
res = [ i for i in test_list if test_list.count(i) > K]
  
# print result
print("The list removing elements less than and equal K  : " + str(res))
Producción :

The original list : [1, 4, 3, 2, 3, 3, 2, 2, 2, 1]
The list removing elements less than and equal K  : [3, 2, 3, 3, 2, 2, 2]

Método n.º 2: Uso de Counter()la comprensión de la lista +
Este problema se puede resolver de manera eficiente mediante la función Contador, que precalcula el recuento de cada elemento de la lista para que la decisión de mantener o rechazar un elemento en particular tome menos tiempo.

# Python3 code to demonstrate
# remove elements less than and equal K 
# using Counter() + list comprehension
from collections import Counter
  
# initializing list
test_list = [1, 4, 3, 2, 3, 3, 2, 2, 2, 1]
  
# printing original list
print("The original list : " + str(test_list))
  
# initializing K
K = 2
  
# using Counter() + list comprehension
# remove elements less than K 
freq = Counter(test_list)
res = [ele for ele in test_list if freq[ele] > K]
  
# print result
print("The list removing elements less than and equal K  : " + str(res))
Producción :

The original list : [1, 4, 3, 2, 3, 3, 2, 2, 2, 1]
The list removing elements less than and equal K  : [3, 2, 3, 3, 2, 2, 2]

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 *