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))
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))
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