Python – Filtrar filas con elementos de rango

Dada una Array, filtre todas las filas que contienen todos los elementos en el rango de números dado.

Entrada : test_list = [[3, 2, 4, 5, 10], [3, 2, 5, 19], [2, 5, 10], [2, 3, 4, 5, 6, 7]], i, j = 2, 5 
Salida : [[3, 2, 4, 5, 10], [2, 3, 4, 5, 6, 7]] 
Explicación : 2, 3, 4, 5 todos están presentes arriba filas

Entrada : test_list = [[3, 2, 4, 10], [3, 2, 5, 19], [2, 5, 10], [2, 3, 4, 5, 6, 7]], i, j = 2, 5 
Salida : [[2, 3, 4, 5, 6, 7]] 
Explicación : 2, 3, 4, 5 están todos presentes en las filas anteriores. 
 

Método #1: Usando all() + comprensión de lista

En esto, verificamos la presencia de todos los elementos en el rango usando all() y se usa la comprensión de lista para la tarea de iteración de elementos. 

Python3

# Python3 code to demonstrate working of
# Filter Rows with Range Elements
# Using all() + list comprehension
  
# initializing list
test_list = [[3, 2, 4, 5, 10], [3, 2, 5, 19], 
             [2, 5, 10], [2, 3, 4, 5, 6, 7]]
  
# printing original list
print("The original list is : " + str(test_list))
  
# initializing range
i, j = 2, 5
  
# checking for presence of all elements using in operator
res = [sub for sub in test_list if all(ele in sub for ele in range(i, j + 1))]
  
# printing result
print("Extracted rows : " + str(res))

Producción:

La lista original es: [[3, 2, 4, 5, 10], [3, 2, 5, 19], [2, 5, 10], [2, 3, 4, 5, 6, 7]]
Filas extraídas: [[3, 2, 4, 5, 10], [2, 3, 4, 5, 6, 7]]

Método #2: Usando filter() + lambda + all()

En esto, la tarea de filtrado se realiza usando filter() y la función lambda, all() se usa nuevamente para garantizar la presencia de todos los elementos en el rango.

Python3

# Python3 code to demonstrate working of
# Filter Rows with Range Elements
# Using filter() + lambda + all()
  
# initializing list
test_list = [[3, 2, 4, 5, 10], [3, 2, 5, 19],
             [2, 5, 10], [2, 3, 4, 5, 6, 7]]
  
# printing original list
print("The original list is : " + str(test_list))
  
# initializing range
i, j = 2, 5
  
# filter() and lambda used to filter elements
res = list(filter(lambda sub: all(
    ele in sub for ele in range(i, j + 1)), test_list))
  
# printing result
print("Extracted rows : " + str(res))

Producción:

La lista original es: [[3, 2, 4, 5, 10], [3, 2, 5, 19], [2, 5, 10], [2, 3, 4, 5, 6, 7]]
Filas extraídas: [[3, 2, 4, 5, 10], [2, 3, 4, 5, 6, 7]]

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 *