Python|自定义列表切片总和
对列表进行切片的问题之前已经处理过,但有时我们需要根据其他列表中给出的输入执行可变长度切片及其求和。这个问题在 Web 开发中具有潜在的应用。让我们讨论一些可以做到这一点的方法。
方法 #1:使用itertools.islice() + sum()
+ 列表理解
列表推导可用于遍历列表,并使用 islice函数解决组件问题。求和由 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]
方法 #2:使用zip() + accumulate() + sum()
+ 列表切片
除了使用列表推导来执行绑定任务外,该方法还使用 zip函数将子列表元素保持在一起,累积函数将元素连接起来,并使用切片来构造所需的切片。求和由 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]