Python: reemplaza elementos consecutivos idénticos en la lista con el producto de la frecuencia y el artículo

Dada una lista, la tarea es escribir un programa en Python para reemplazar la agrupación de los elementos consecutivos con un producto de la frecuencia y el artículo.

Entrada: test_list = [3, 3, 3, 3, 6, 7, 5, 5, 5, 8, 8, 6, 6, 6, 6, 6, 1, 1, 1, 2, 2]

Salida: [12, 6, 7, 15, 16, 30, 3, 4]

Explicación: 3 ocurre 4 veces seguidas, por lo tanto, 3*4 = 12, el resultado.

Entrada: test_list = [3, 3, 3, 3, 6, 7, 5, 5, 5]

Salida: [12, 6, 7, 15]

Explicación: 5 ocurre 3 veces seguidas, por lo tanto, 5*3 = 15, el resultado.

Método 1: Usar bucle.

En esto, el elemento se compara con el elemento anterior para la decisión del final del grupo, si los elementos son diferentes, un producto de contar hasta ahora y el elemento se agrega como resultado. 

Python3

# Python3 code to demonstrate working of
# Equal Consecution Product
# Using loop
 
# initializing list
test_list = [3, 3, 3, 3, 6, 7, 5, 5, 5, 8,
             8, 6, 6, 6, 6, 6, 1, 1, 1, 2, 2]
              
# printing original list
print("The original list is : " + str(test_list))
 
res = []
count = 1
for idx in range(1, len(test_list)):
     
    # checking with prev element
    if test_list[idx - 1] != test_list[idx]:
         
        # appending product
        res.append((test_list[idx - 1] * count))
        count = 0
    count += 1
res.append((test_list[-1] * count))
 
# printing result
print("Elements after equal Consecution product : " + str(res))

Producción:

La lista original es: [3, 3, 3, 3, 6, 7, 5, 5, 5, 8, 8, 6, 6, 6, 6, 6, 1, 1, 1, 2, 2]

Elementos después de igual producto de Consecución: [12, 6, 7, 15, 16, 30, 3, 4]

Método 2: Usar groupby() + sum()

En esto, los grupos se forman usando groupby() y la suma de los elementos agrupados da el producto requerido.

Python3

# Python3 code to demonstrate working of
# Equal Consecution Product
# Using groupby() + sum()
from itertools import groupby
 
# initializing list
test_list = [3, 3, 3, 3, 6, 7, 5, 5, 5, 8, 8, 6, 6, 6, 6, 6, 1, 1, 1, 2, 2]
              
# printing original list
print("The original list is : " + str(test_list))
 
# creating Consecution groups and summing for required values
res = [sum(group) for k, group in groupby(test_list)]
 
# printing result
print("Elements after equal Consecution product : " + str(res))

Producción:

La lista original es: [3, 3, 3, 3, 6, 7, 5, 5, 5, 8, 8, 6, 6, 6, 6, 6, 1, 1, 1, 2, 2]

Elementos después de igual producto de Consecución: [12, 6, 7, 15, 16, 30, 3, 4]

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 *