You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对列表按每4个元素分组并计算每组的和?

列表按4元素分组求和的实现

需求:将输入列表按每4个元素划分为一组,计算每组的元素总和,最终返回由各组总和组成的新列表。
示例:
输入:[2,2,2,2,3,3,3,3,4,4,4,4]
输出:[8,12,16]

方法一:切片推导式(基础实现)

直接通过循环切片获取每组元素,再计算总和,逻辑直观易懂,适合处理任意长度的列表(最后一组元素不足4个时仍会正常求和):

def calculate_group_sum(input_list, group_size=4):
    return [sum(input_list[i:i+group_size]) for i in range(0, len(input_list), group_size)]

# 测试示例
test_list = [2,2,2,2,3,3,3,3,4,4,4,4]
print(calculate_group_sum(test_list))  # 输出: [8, 12, 16]

方法二:利用itertools工具库

如果允许使用Python标准库的itertools模块,可以用zip_longest来实现分组,适合需要统一处理“不足组大小的剩余元素”的场景(可通过fillvalue参数指定补位值,默认补0):

from itertools import zip_longest

def calculate_group_sum(input_list, group_size=4):
    # 将列表重复group_size次后按位置打包,实现分组
    groups = zip_longest(*[iter(input_list)]*group_size, fillvalue=0)
    return [sum(group) for group in groups]

# 测试示例
test_list = [2,2,2,2,3,3,3,3,4,4,4,4]
print(calculate_group_sum(test_list))  # 输出: [8, 12, 16]

补充说明

  • 如果输入列表长度不是4的倍数,比如[1,2,3,4,5,6]:
    • 方法一会得到[10, 11](最后一组仅2个元素,直接求和)
    • 方法二默认会补0,得到[10, 11](5+6+0+0=11),若不需要补位,可改用itertools.islice或直接用方法一。

内容的提问来源于stack exchange,提问作者ddd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 22:50:40