Python按指定长度对列表元素分组求和的实现方法
按指定长度分批求和列表元素
给定两个列表:
numlist = [1, 1, 1, 1, 4, 1, 1, 4, 1, 2] lenwords = [2, 3, 5]
需要按lenwords中的数值依次从numlist中取出对应数量的元素求和,最终得到[2, 6, 9]的结果。
使用itertools的实现方式
利用迭代器配合itertools.islice可以高效完成需求,迭代器会自动记录已取元素的位置,无需手动维护索引:
import itertools numlist = [1, 1, 1, 1, 4, 1, 1, 4, 1, 2] lenwords = [2, 3, 5] num_iter = iter(numlist) results = [] for length in lenwords: # 从迭代器中截取指定长度的元素并求和 chunk_sum = sum(itertools.islice(num_iter, length)) results.append(chunk_sum) print(results) # 输出: [2, 6, 9]
手动维护索引的实现方式
如果不想引入itertools,直接通过索引切片也能实现:
numlist = [1, 1, 1, 1, 4, 1, 1, 4, 1, 2] lenwords = [2, 3, 5] start = 0 results = [] for length in lenwords: end = start + length results.append(sum(numlist[start:end])) start = end print(results) # 输出: [2, 6, 9]
内容的提问来源于stack exchange,提问作者Juliana Gómez
相关产品推荐
相关产品推荐

