Python | Suma de rango de índice personalizado

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))
Producción :

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))
Producción :

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *