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