Python: elimine los duplicados de tupla Equilength y Equisum

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))
Producción

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))
Producción

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *