Python – Extraer filas emparejadas

Dada una array, la tarea es escribir un programa en Python para extraer todas las filas que tienen elementos emparejados. es decir, los elementos tienen una frecuencia de mod 2.

Entrada : test_list = [[10, 2, 3, 2, 3], [5, 5, 4, 7, 7, 4], [1, 2], [1, 1, 2, 2]] 
Salida : [ [5, 5, 4, 7, 7, 4], [1, 1, 2, 2]] 
Explicación : Todas las filas tienen elementos pares, es decir, tienen ocurrencia par.
 

Entrada : test_list = [[10, 2, 3, 2, 3], [5, 5, 4, 7, 4], [1, 2], [1, 1, 2, 2]] 
Salida : [[1 , 1, 2, 2]] 
Explicación : Todas las filas tienen elementos de par, es decir, tienen ocurrencia par. 

Método #1: Usar all() + comprensión de listas + contar()

En esto, verificamos el conteo de cada elemento usando count() , y all() se usa para probar que la frecuencia de todos los elementos es divisible por 2.

Python3

# Python3 code to demonstrate working of
# Extract Paired Rows
# Using all() + list comprehension + count()
  
# initializing list
test_list = [[10, 2, 3, 2, 3], [5, 5, 4, 7, 7, 4],
             [1, 2], [1, 1, 2, 2]]
  
# printing original list
print("The original list is : " + str(test_list))
  
# count() checks for frequency to be mod 2
res = [row for row in test_list if all(
  row.count(ele) % 2 == 0 for ele in row)]
  
# printing result
print("Extracted rows : " + str(res))

Producción:

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

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

En esto, realizamos la tarea de filtrar usando filter() y la función lambda en lugar de la comprensión de listas. Count () y all() se utilizan para verificar la frecuencia de todos los elementos en las filas.

Python3

# Python3 code to demonstrate working of
# Extract Paired Rows
# Using filter() + lambda + count() + all()
  
# initializing list
test_list = [[10, 2, 3, 2, 3], [5, 5, 4, 7, 7, 4],
             [1, 2], [1, 1, 2, 2]]
  
# printing original list
print("The original list is : " + str(test_list))
  
# count() checks for frequency to be mod 2
# filter() and lambda used to perform filtering
res = list(filter(lambda row: all(
  row.count(ele) % 2 == 0 for ele in row), test_list))
  
# printing result
print("Extracted rows : " + str(res))

Producción:

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

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 *