Dada una Array, escriba un programa de Python para eliminar toda la columna si se produce un duplicado en cualquier fila.
Ejemplos:
Entrada : test_list = [[4, 3, 5, 2, 3], [6, 4, 2, 1, 1], [4, 3, 9, 3, 9], [5, 4, 3, 2, 1]]
Salida : [[4, 3, 5], [6, 4, 2], [4, 3, 9], [5, 4, 3]]
Explicación : 1 tiene duplicado como siguiente elemento, por lo tanto, la quinta columna es remoto. 3 aparece como 2.º y 4.º índice, por lo que se elimina el 4.º índice.Entrada : test_list = [[6, 4, 2, 1, 1], [4, 3, 9, 3, 9], [5, 4, 3, 2, 1]]
Salida : [[6, 4, 2 ], [4, 3, 9], [5, 4, 3]]
Explicación : 1 tiene un duplicado como siguiente elemento, por lo que se elimina la quinta columna. 3 aparece como 2.º y 4.º índice, por lo que se elimina el 4.º índice.
Enfoque: Uso de comprensión de listas + set() + chain.from_iterable() + generador + bucle
En esto, los índices que son elementos duplicados se extraen como primer paso usando la función de generador y set(). En el segundo paso, todas las columnas requeridas se excluyen durante la reconstrucción de Matrix.
Python3
# Python3 code to demonstrate working of # Remove Columns of Duplicate Elements # Using list comprehension + set() + # chain.from_iterable() + generator + loop from itertools import chain def dup_idx(sub): memo = set() for idx, ele in enumerate(sub): # adding element if not there if ele not in memo: memo.add(ele) else: # return index is Duplicate yield idx # initializing list test_list = [[4, 3, 5, 2, 3], [6, 4, 2, 1, 1], [4, 3, 9, 3, 9], [5, 4, 3, 2, 1]] # printing original list print("The original list is : " + str(test_list)) # initializing K K = 3 # passing each row to generator function # flattening indices at end temp_idxs = set(chain.from_iterable(dup_idx(sub) for sub in test_list)) # extracting columns with only non-duplicate indices values res = [[ele for idx, ele in enumerate( sub) if idx not in temp_idxs] for sub in test_list] # printing result print("The filtered Matrix : " + str(res))
Producción:
La lista original es: [[4, 3, 5, 2, 3], [6, 4, 2, 1, 1], [4, 3, 9, 3, 9], [5, 4, 3, 2 , 1]]
La array filtrada: [[4, 3, 5], [6, 4, 2], [4, 3, 9], [5, 4, 3]]
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