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))
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)))
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