Python | Eliminar elementos de la lista que se repiten menos de k veces

Dada una lista de enteros (los elementos pueden repetirse), escriba un programa en Python para eliminar los elementos que se repiten menos de k veces.

Ejemplos:

Input : lst = ['a', 'a', 'a', 'b', 'b', 'c'], k = 2
Output : ['a', 'a', 'a', 'b', 'b']

Input : lst = [1, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4], k = 3
Output : [1, 1, 1, 1, 3, 3, 3]

Enfoque n. ° 1: ingenuo pythonico

Counter()desde collections moduleconstruir un diccionario asignando valores a conteos y guárdelos en ‘contados’. Luego hacemos uso de ‘temp_lst’ para almacenar los elementos que deben eliminarse. Finalmente, recorremos la lista dada y agregamos todos los elementos que no están en ‘temp_lst’ a ‘res_lst’ que contiene la salida requerida.

# Python3 program to Remove elements of 
# list that repeated less than k times
from collections import Counter
  
def removeElements(lst, k):
    counted = Counter(lst)
      
    temp_lst = []
    for el in counted:
        if counted[el] < k:
            temp_lst.append(el)
              
    res_lst = []
    for el in lst:
        if el not in temp_lst:
            res_lst.append(el)
              
    return(res_lst)
      
# Driver code
lst = ['a', 'a', 'a', 'b', 'b', 'c']
k = 2
print(removeElements(lst, k))
Producción:

['a', 'a', 'a', 'b', 'b']

Enfoque #2: Enfoque Eficiente

El enfoque eficiente para usar el método Counter es construir un valor de mapeo de diccionario para los recuentos y luego usar una lista de comprensión para filtrar los recuentos mayores que un valor especificado. Este enfoque es eficiente tanto en tiempo como en espacio.

# Python3 program to Remove elements of 
# list that repeated less than k times
from collections import Counter
  
def removeElements(lst, k):
    counted = Counter(lst)
    return [el for el in lst if counted[el] >= k]
      
# Driver code
lst = ['a', 'a', 'a', 'b', 'b', 'c']
k = 2
print(removeElements(lst, k))
Producción:

['a', 'a', 'a', 'b', 'b']

Publicación traducida automáticamente

Artículo escrito por Smitha Dinesh Semwal 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 *