Programa de Python para marcar elementos duplicados en una string

Dada una lista, la tarea es escribir un programa en Python para marcar la aparición duplicada de elementos con un número de aparición progresivo.

Entrada: test_list = [‘gfg’, ‘is’, ‘best’, ‘gfg’, ‘best’, ‘for’, ‘all’, ‘gfg’]

Salida: [‘gfg1’, ‘es’, ‘mejor1’, ‘gfg2’, ‘mejor2’, ‘para’, ‘todos’, ‘gfg3’]

Explicación: todas las ocurrencias de gfg están marcadas porque tienen múltiples repeticiones (3).

Entrada: test_list = [‘gfg’, ‘is’, ‘best’, ‘best’, ‘for’, ‘all’]

Salida: [‘gfg’, ‘es’, ‘mejor1’, ‘mejor2’, ‘para’, ‘todos’]

Explicación: las mejores ocurrencias están marcadas ya que tienen múltiples repeticiones (2).

Método 1: Usando count() + enumerate() + lista de comprensión + rebanado 

En esto, para obtener el recuento duplicado, la lista se divide en el índice del elemento actual, y el recuento de ocurrencias de ese elemento hasta el índice actual se calcula utilizando count() y append.

Python3

# Python3 code to demonstrate working of
# Mark duplicate elements
# Using count() + enumerate() + list comprehension + slicing 
  
# initializing list
test_list = ["gfg", "is", "best", "gfg", 
             "best", "for", "all", "gfg"]
               
# printing original list
print("The original list is : " + str(test_list))
  
# getting count till current using count() and slicing
res = [val + str(test_list[:idx].count(val) + 1) if test_list.count(val) > 1 else val for idx,
       val in enumerate(test_list)]
  
# printing result
print("Duplicates marked List : " + str(res))

Producción:

La lista original es: [‘gfg’, ‘is’, ‘best’, ‘gfg’, ‘best’, ‘for’, ‘all’, ‘gfg’]

Lista de duplicados marcados: [‘gfg1’, ‘is’, ‘best1’, ‘gfg2’, ‘best2’, ‘for’, ‘all’, ‘gfg3’]

Método 2: Usando map() + count() + lambda

De manera similar al método anterior, la única diferencia es que map() se usa para obtener una función que usa lambda para extenderse a todos los elementos de la lista.

Python3

# Python3 code to demonstrate working of
# Mark duplicate elements
# Using map() + count() + lambda
  
# initializing list
test_list = ["gfg", "is", "best", "gfg", 
             "best", "for", "all", "gfg"]
               
# printing original list
print("The original list is : " + str(test_list))
  
# getting count till current using count() and slicing
res = list(map(lambda ele: ele[1] + str(test_list[ : ele[0]].count(ele[1]) + 1) if test_list.count(ele[1]) > 1 else ele[1],
               enumerate(test_list)))
  
# printing result
print("Duplicates marked List : " + str(res))

Producción:

La lista original es: [‘gfg’, ‘is’, ‘best’, ‘gfg’, ‘best’, ‘for’, ‘all’, ‘gfg’]

Lista de duplicados marcados: [‘gfg1’, ‘is’, ‘best1’, ‘gfg2’, ‘best2’, ‘for’, ‘all’, ‘gfg3’]

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 *