A veces, mientras trabajamos con tuplas de Python, podemos tener un problema en el que necesitamos eliminar duplicados sobre la base de la misma longitud y la misma suma. Este tipo de problema también se puede romper para acomodar cualquiera de las condiciones requeridas. Este tipo de problema puede ocurrir en dominios de datos y programación día a día. Analicemos ciertas formas en que se puede realizar esta tarea.
Entrada : lista_prueba = [(1, 2, 0), (3, 0), (2, 1)]
Salida : [(1, 2, 0), (3, 0)]
Entrada : lista_prueba = [(1, 2, 0), (3, 0, 0), (0, 2, 1)]
Salida : [(1, 2, 0)]
Método #1: Uso de bucles anidados
Esta es una de las formas en que se puede realizar esta tarea. Este es el método de fuerza bruta, en el que realizamos un bucle para cada tupla, una tupla equivalente en tamaño y suma, y realizamos la eliminación.
Python3
# Python3 code to demonstrate working of # Remove Equilength and Equisum Tuple Duplicates # Using nested loop # initializing lists test_list = [(4, 5, 6), (3, 0), (2, 1), (1, 2, 3), (5, 5, 5)] # printing original list print("The original list is : " + str(test_list)) # Remove Equilength and Equisum Tuple Duplicates # Using nested loop res = [] for sub in test_list: for sub1 in res: if len(sub) == len(sub1) and sum(sub) == sum(sub1): break else: res.append(sub) # printing result print("Tuples after filtration : " + str(res))
The original list is : [(4, 5, 6), (3, 0), (2, 1), (1, 2, 3), (5, 5, 5)] Tuples after filtration : [(4, 5, 6), (3, 0), (1, 2, 3)]
Método #2: Usar dict() + valores()
La combinación de las funciones anteriores ofrece otra forma de resolver este problema. En esto, simplemente aprovechamos la propiedad del diccionario de tener claves únicas y creamos una clave de tupla con longitud y suma de tuplas. Se evitan así los duplicados.
Python3
# Python3 code to demonstrate working of # Remove Equilength and Equisum Tuple Duplicates # Using dict() + values() # initializing lists test_list = [(4, 5, 6), (3, 0), (2, 1), (1, 2, 3), (5, 5, 5)] # printing original list print("The original list is : " + str(test_list)) # Remove Equilength and Equisum Tuple Duplicates # Using dict() + values() res = list({(len(sub), sum(sub)): sub for sub in test_list}.values()) # printing result print("Tuples after filtration : " + str(res))
The original list is : [(4, 5, 6), (3, 0), (2, 1), (1, 2, 3), (5, 5, 5)] Tuples after filtration : [(5, 5, 5), (2, 1), (1, 2, 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