El desarrollo y, a veces, las aplicaciones de aprendizaje automático requieren dividir listas en listas más pequeñas de forma personalizada, es decir, en ciertos valores en los que se debe realizar la división y luego la suma. Esta es una utilidad bastante útil para tener conocimiento. Analicemos ciertas formas en que se puede realizar esta tarea.
Método n.° 1: usar la comprensión de listas +zip() + sum()
Al combinar el poder de la comprensión de listas y zip(), se puede lograr esta tarea. En esto, comprimimos el principio y el final de la lista y luego seguimos cortando la lista a medida que llegan y eliminando nuevas listas de ellos. La tarea de encontrar la sumatoria se realiza usando sum().
# Python3 code to demonstrate # Custom Index Range Summation # using list comprehension + zip() + sum() # initializing string test_list = [1, 4, 5, 6, 7, 3, 5, 9, 2, 4] # initializing split index list split_list = [2, 5, 7] # printing original list print ("The original list is : " + str(test_list)) # printing original split index list print ("The original split index list : " + str(split_list)) # using list comprehension + zip() + sum() # Custom Index Range Summation res = [sum(test_list[i : j]) for i, j in zip([0] + split_list, split_list + [None])] # printing result print ("The splitted lists summation are : " + str(res))
The original list is : [1, 4, 5, 6, 7, 3, 5, 9, 2, 4] The original split index list : [2, 5, 7] The splitted lists summation are : [5, 18, 8, 15]
Método #2: Usaritertools.chain() + zip() + sum()
La tarea realizada por la función de comprensión de lista de obtener los fragmentos divididos también se puede realizar usando la función de string. Esto es más útil cuando deseamos manejar listas más grandes ya que este método es más eficiente. La tarea de encontrar la sumatoria se realiza usando sum().
# Python3 code to demonstrate # Custom Index Range Summation # using itertools.chain() + zip() from itertools import chain # initializing string test_list = [1, 4, 5, 6, 7, 3, 5, 9, 2, 4] # initializing split index list split_list = [2, 5, 7] # printing original list print ("The original list is : " + str(test_list)) # printing original split index list print ("The original split index list : " + str(split_list)) # using itertools.chain() + zip() # Custom Index Range Summation temp = zip(chain([0], split_list), chain(split_list, [None])) res = list(sum(test_list[i : j]) for i, j in temp) # printing result print ("The splitted lists summations are : " + str(res))
The original list is : [1, 4, 5, 6, 7, 3, 5, 9, 2, 4] The original split index list : [2, 5, 7] The splitted lists summation are : [5, 18, 8, 15]
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