Python: suma de sublista incremental

A veces necesitamos agrupar elementos y las técnicas de agrupación y los requisitos varían en consecuencia. Una de esas formas de agrupar los elementos es por el i-ésimo tamaño en la lista que almacena el diccionario de claves de índice con valores de suma del tamaño subsiguiente i. Vamos a discutir ciertas formas en que esto se puede hacer.

Método n.º 1: uso de islice() + sum()la comprensión del diccionario +
El método de división se puede usar para agrupar los fragmentos de la lista que se deben crear como valores de los diccionarios que luego se asignan a su clave de índice destinada utilizando la comprensión del diccionario. El sum() se usa para realizar la suma de la lista creada.

# Python3 code to demonstrate
# Incremental Sublist Sum
# using islice() + sum() + dictionary comprehension
from itertools import islice
  
# initializing list
test_list = [4, 7, 8, 10, 12, 15, 13, 17, 14, 5]
  
# printing original list 
print("The original list : " + str(test_list))
  
# using islice() + sum() + dictionary comprehension
# Incremental Sublist Sum
temp = iter(test_list)
res = {key: val for key, val in ((i, sum(list(islice(temp, i)))) for i in range(1, len(test_list))) if val}
  
# printing result
print("The Incremental Sublist Sum is : " + str(res))
Producción :

The original list : [4, 7, 8, 10, 12, 15, 13, 17, 14, 5]
The Incremental Sublist Sum is : {1: 4, 2: 15, 3: 37, 4: 49}

Método n.º 2: usoitemgetter() + takewhile() + islice() + sum()
Para aumentar la velocidad de cálculo, presentamos nuevas funciones para realizar esta tarea en particular, las funciones takewhile y itemgetter que realizan la tarea de agrupar los valores divididos. El sum() se usa para realizar la suma de la lista creada.

# Python3 code to demonstrate
# Incremental Sublist Sum
# using itemgetter() + takewhile() + islice() + sum()
from itertools import islice, takewhile
from operator import itemgetter
  
# initializing list
test_list = [4, 7, 8, 10, 12, 15, 13, 17, 14, 5]
  
# printing original list 
print("The original list : " + str(test_list))
  
# using itemgetter() + takewhile() + islice() + sum()
# Incremental Sublist Sum
temp = iter(test_list)
res = {key: val for key, val in takewhile(itemgetter(1), ((i, sum(list(islice(temp, i)))) for i in range(1, len(test_list))))}
  
# printing result
print("The Incremental Sublist Sum is : " + str(res))
Producción :

The original list : [4, 7, 8, 10, 12, 15, 13, 17, 14, 5]
The Incremental Sublist Sum is : {1: 4, 2: 15, 3: 37, 4: 49}

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 *