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