Python | Eliminar los primeros elementos K que coincidan con alguna condición

La eliminación de elementos en la lista se puede realizar utilizando muchas funciones integradas. Eliminando todas o solo una eliminación de ocurrencia, ambas funciones están presentes en la biblioteca de Python. Este artículo analiza cómo eliminar solo las primeras K ocurrencias de elementos que coincidan con una condición particular.

Método n.º 1: método ingenuo
Podemos agregar los elementos que coinciden con la condición después de que se hayan realizado K ocurrencias de elementos y, por lo tanto, realizarían una tarea similar a la eliminación.

# Python3 code to demonstrate 
# to remove first K elements matching condition
# using Naive Method 
  
# initializing list
test_list = [3, 5, 1, 6, 7, 9, 8, 5]
  
# printing original list
print ("The original list is : " + str(test_list))
  
# using Naive Method 
# to remove first K elements matching condition 
# removes first 4 odd occurrences
counter = 1
res = []
for i in test_list:
    if counter > 4 or not (i % 2 != 0):
        res.append(i)
    else:
        counter += 1
  
# printing result
print ("The filtered list is : " + str(res))
Producción:

The original list is : [3, 5, 1, 6, 7, 9, 8, 5]
The filtered list is : [6, 9, 8, 5]

 
Método #2: Usaritertools.filterfalse() + itertools.count()
Esta es una forma diferente y elegante de realizar esta tarea en particular. Filtra todos los números que se vuelven mayores que K cuando el contador alcanza K y coincide con la condición. Este es un método sencillo y preferido para lograr esta tarea.

# Python3 code to demonstrate 
# to remove first K elements matching condition
# using itertools.filterfalse() + itertools.count()
from itertools import filterfalse, count
  
# initializing list
test_list = [3, 5, 1, 6, 7, 9, 8, 5]
  
# printing original list
print ("The original list is : " + str(test_list))
  
# using itertools.filterfalse() + itertools.count()
# to remove first K elements matching condition 
# removes first 4 odd occurrences
res = filterfalse(lambda i, counter = count(): i % 2 != 0 and
                                next(counter) < 4, test_list)
  
# printing result
print ("The filtered list is : " + str(list(res)))
Producción:

The original list is : [3, 5, 1, 6, 7, 9, 8, 5]
The filtered list is : [6, 9, 8, 5]

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 *