Python | Filtrar tuplas según la presencia del elemento de la lista

A veces, mientras trabajamos con registros, podemos tener un problema en el que tenemos que filtrar todas las tuplas de una lista de tuplas, que contiene al menos un elemento de una lista. Esto puede tener aplicación en muchos dominios que trabajan con datos. Analicemos ciertas formas en que se puede realizar esta tarea.

Método #1: Uso de la comprensión de listas
El uso de la comprensión de listas es un método de fuerza bruta para realizar esta tarea de forma abreviada. En esto, solo verificamos cada tupla y verificamos si contiene algún elemento de la lista de destino.

# Python3 code to demonstrate working of
# Filter tuples according to list element presence
# using list comprehension
  
# initialize list of tuple
test_list = [(1, 4, 6), (5, 8), (2, 9), (1, 10)]
  
# initialize target list 
tar_list = [6, 10]
  
# printing original tuples list
print("The original list : " + str(test_list))
  
# Filter tuples according to list element presence
# using list comprehension
res = [tup for tup in test_list if any(i in tup for i in tar_list)]
  
# printing result
print("Filtered tuple from list are : " + str(res))
Producción :

The original list : [(1, 4, 6), (5, 8), (2, 9), (1, 10)]
Filtered tuple from list are : [(1, 4, 6), (1, 10)]

Método n.º 2: Uso set()de la comprensión de lista +
El enfoque anterior se puede optimizar convirtiendo los contenedores en set()duplicados reducidos y realizando una operación & para obtener los registros deseados.

# Python3 code to demonstrate working of
# Filter tuples according to list element presence
# using set() + list comprehension
  
# initialize list of tuple
test_list = [(1, 4, 6), (5, 8), (2, 9), (1, 10)]
  
# initialize target list 
tar_list = [6, 10]
  
# printing original tuples list
print("The original list : " + str(test_list))
  
# Filter tuples according to list element presence
# using set() + list comprehension
res = [tup for tup in test_list if (set(tar_list) & set(tup))]
  
# printing result
print("Filtered tuple from list are : " + str(res))
Producción :

The original list : [(1, 4, 6), (5, 8), (2, 9), (1, 10)]
Filtered tuple from list are : [(1, 4, 6), (1, 10)]

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 *