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