📜  Python – 增量子列表总和

📅  最后修改于: 2022-05-13 01:55:45.322000             🧑  作者: Mango

Python – 增量子列表总和

有时我们需要对元素进行分组,分组技术和要求也会相应变化。对元素进行分组的一种方法是按列表中的第 i 个大小,它存储索引键的字典以及后续大小 i 的总和值。让我们讨论一些可以做到这一点的方法。

方法 #1:使用islice() + sum() + 字典理解
slice 方法可用于将需要制作的列表块分组为字典的值,然后使用字典推导将其分配给它们的目标索引键。 sum() 用于执行创建列表的总和。

# 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}

方法 #2:使用itemgetter() + takewhile() + islice() + sum()
为了提高计算速度,我们引入了新的函数来执行这个特定的任务,takewhile 和 itemgetter 函数执行对切片值进行分组的任务。 sum() 用于执行创建列表的总和。

# 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}