Python: extrae registros si los elementos Kth no están en la lista

Dada la lista de tuplas, la tarea es extraer todas las tuplas donde los elementos del índice Kth no están presentes en la lista de argumentos.

Entrada  : lista_prueba = [(5, 3), (7, 4), (1, 3), (7, 8), (0, 6)], lista_arg = [6, 8, 8], K = 1

Salida : [(5, 3), (7, 4), (1, 3)]

Explicación : se eliminan todos los elementos que tienen 6 u 8 en el primer índice.

Entrada  : test_list = [(5, 3), (7, 4)], arg_list = [3, 3, 3, 3], K = 1

Salida : [(7, 4)]

Explicación : (5, 3) se elimina porque tiene 3 en el primer índice.

Método #1: Usar set() + bucle

Esta es una forma en que esta tarea puede ser. En esto, acortamos la lista de argumentos usando set y luego verificamos de manera eficiente si el índice Kth tiene algún elemento de arg. enumere y agregue según corresponda.

Python3

# Python3 code to demonstrate working of
# Extract records if Kth elements not in List
# Using loop
  
# initializing list
test_list = [(5, 3), (7, 4), (1, 3), (7, 8), (0, 6)]
  
# printing original list
print("The original list : " + str(test_list))
  
# initializing arg. list
arg_list = [4, 8, 4]
  
# initializing K
K = 1
  
# Using set() to shorten arg list
temp = set(arg_list)
  
# loop to check for elements and append
res = []
for sub in test_list:
    if sub[K] not in arg_list:
        res.append(sub)
  
# printing result
print("Extracted elements : " + str(res))
Producción

The original list : [(5, 3), (7, 4), (1, 3), (7, 8), (0, 6)]
Extracted elements : [(5, 3), (1, 3), (0, 6)]

Método n.° 2: usar la comprensión de listas + set()

Esta es otra forma más en la que se puede realizar esta tarea. En esto, compilamos tanto la tarea de filtrar duplicados usando set() como la de compilar elementos usando condicionales dentro de la comprensión de listas.

Python3

# Python3 code to demonstrate working of
# Extract records if Kth elements not in List
# Using list comprehension + set()
  
# initializing list
test_list = [(5, 3), (7, 4), (1, 3), (7, 8), (0, 6)]
  
# printing original list
print("The original list : " + str(test_list))
  
# initializing arg. list
arg_list = [4, 8, 4]
  
# initializing K
K = 1
  
# Compiling set() and conditionals into single comprehension
res = [(key, val) for key, val in test_list if val not in set(arg_list)]
  
# printing result
print("Extracted elements : " + str(res))
Producción

The original list : [(5, 3), (7, 4), (1, 3), (7, 8), (0, 6)]
Extracted elements : [(5, 3), (1, 3), (0, 6)]

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 *