Python | Reemplazar duplicados en tupla

A veces, mientras trabajamos con tuplas de Python, podemos tener un problema en el que necesitamos eliminar los elementos de tuplas que ocurren más de una vez y reemplazar los duplicados con algún valor personalizado. Analicemos ciertas formas en que se puede realizar esta tarea.
Método #1: Uso de set() + comprensión de lista 
La combinación de las funcionalidades anteriores se puede usar para realizar esta tarea en particular. En esto, simplemente inicializamos un conjunto de contenedores y luego reemplazamos los elementos recurrentes con un valor después de verificar su existencia en tupla.
 

Python3

# Python3 code to demonstrate working of
# Replace duplicates in tuple
# using set() + list comprehension
 
# initialize tuple
test_tup = (1, 1, 4, 4, 4, 5, 5, 6, 7, 7)
 
# printing original tuple
print("The original tuple is : " + str(test_tup))
 
# Replace duplicates in tuple
# using set() + list comprehension
temp = set()
res = tuple(ele if ele not in temp and not temp.add(ele)
                else 'gfg' for ele in test_tup)
 
# printing result
print("Tuple after replacing values : " + str(res))
Producción : 

The original tuple is : (1, 1, 4, 4, 4, 5, 5, 6, 7, 7)
Tuple after replacing values : (1, 'gfg', 4, 'gfg', 'gfg', 5, 'gfg', 6, 7, 'gfg')

 

 
Método #2: Usar groupby() + loop 
La combinación de las funcionalidades anteriores se puede resolver usando este problema. En esto, solo agrupamos los elementos consecutivos y luego reemplazamos cada elemento excepto el primero con el valor predeterminado. Funciona solo en caso de duplicados consecutivos.
 

Python3

# Python3 code to demonstrate working of
# Replace duplicates in tuple
# using groupby() + loop
from itertools import groupby
 
# initialize tuple
test_tup = (1, 1, 4, 4, 4, 5, 5, 6, 7, 7)
 
# printing original tuple
print("The original tuple is : " + str(test_tup))
 
# Replace duplicates in tuple
# using groupby() + loop
res = tuple()
for key, ele in groupby(test_tup):
    res = res + ((key, ) + ('gfg', ) * (len(list(ele))-1))
 
# printing result
print("Tuple after replacing values : " + str(res))
Producción : 

The original tuple is : (1, 1, 4, 4, 4, 5, 5, 6, 7, 7)
Tuple after replacing values : (1, 'gfg', 4, 'gfg', 'gfg', 5, 'gfg', 6, 7, 'gfg')

 

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 *