El problema de dividir una lista se ha tratado anteriormente, pero a veces necesitamos realizar el corte en longitudes variables y su suma de acuerdo con la entrada dada en otra lista. Este problema tiene su aplicación potencial en el desarrollo web. Vamos a discutir ciertas formas en que esto se puede hacer.
Método n.º 1: usar itertools.islice() + sum()
+ comprensión de
lista La comprensión de lista se puede usar para iterar a través de la lista y el problema del componente se resuelve con la función islice. La suma se realiza mediante sum().
# Python3 code to demonstrate # Custom List slicing Sum # using itertools.islice() + sum() + list comprehension from itertools import islice # initializing test list test_list = [1, 5, 3, 7, 8, 10, 11, 16, 9, 12] # initializing slice list slice_list = [2, 1, 3, 4] # printing original list print("The original list : " + str(test_list)) # printing slice list print("The slice list : " + str(slice_list)) # using itertools.islice() + sum() + list comprehension # Custom List slicing Sum temp = iter(test_list) res = [sum(list(islice(temp, part))) for part in slice_list] # print result print("The variable sliced sum list is : " + str(res))
The original list : [1, 5, 3, 7, 8, 10, 11, 16, 9, 12] The slice list : [2, 1, 3, 4] The variable sliced sum list is : [6, 3, 25, 48]
Método n.º 2: Uso de la segmentación de zip() + accumulate() + sum()
lista +
Además de utilizar la comprensión de lista para realizar la tarea de enlace, este método utiliza la función zip para mantener unido el elemento de la sublista, la función de acumulación une los elementos y la segmentación se utiliza para construir la segmentación requerida. La suma se realiza mediante sum().
# Python3 code to demonstrate # Custom List slicing Sum # using zip() + accumulate() + sum() + list slicing from itertools import accumulate # initializing test list test_list = [1, 5, 3, 7, 8, 10, 11, 16, 9, 12] # initializing slice list slice_list = [2, 1, 3, 4] # printing original list print("The original list : " + str(test_list)) # printing slice list print("The slice list : " + str(slice_list)) # using zip() + accumulate() + sum() + list slicing # Custom List slicing Sum res = [sum(test_list[i - j: i]) for i, j in zip(accumulate(slice_list), slice_list)] # print result print("The variable sliced sum list is : " + str(res))
The original list : [1, 5, 3, 7, 8, 10, 11, 16, 9, 12] The slice list : [2, 1, 3, 4] The variable sliced sum list is : [6, 3, 25, 48]
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