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

Python中无需Numpy实现多元组按列求和的方法

Python中无需Numpy实现多元组按列求和的方法

嗨,这个问题我之前也碰到过,不用numpy其实有好几种实用的办法,我给你梳理几个常用的:

  • 使用zip+sum组合(个人最推荐)
    这个方法简洁又直观,利用zip(*迭代器)把所有元组的对应位置元素“打包”到一起,再用sum分别计算每一组的和:

    n = 5  # 替换成你需要的正整数
    # 生成(i, i²)的迭代器
    num_tuples = ((i, i**2) for i in range(1, n+1))
    # 转置后对每列求和
    sum_nums, sum_squares = map(sum, zip(*num_tuples))
    
    print(sum_nums)    # 输出15,对应1+2+3+4+5的和
    print(sum_squares) # 输出55,对应1²+2²+3²+4²+5²的和
    
  • 使用reduce累加元组
    从functools导入reduce后,我们可以用它来逐步累加每个元组的对应值:

    from functools import reduce
    
    n = 5
    result = reduce(
        lambda acc, curr: (acc[0] + curr[0], acc[1] + curr[1]),
        ((i, i**2) for i in range(1, n+1)),
        (0, 0)  # 初始累加值
    )
    sum_nums, sum_squares = result
    

    这里的lambda函数负责把当前元组的两个值分别加到累加器的对应位置,初始值(0,0)是求和的起点。

  • 直接循环累加(新手友好)
    如果不想用高阶函数,直接初始化两个变量循环累加就好,可读性拉满:

    n = 5
    sum_nums = 0
    sum_squares = 0
    for i in range(1, n+1):
        sum_nums += i
        sum_squares += i**2
    
  • 进阶:用数学公式直接计算(最优效率)
    其实前n个自然数的和与平方和都有现成的数学公式,不需要循环,时间复杂度是O(1),适合n很大的场景:

    n = 5
    sum_nums = n * (n + 1) // 2
    sum_squares = n * (n + 1) * (2 * n + 1) // 6
    

备注:内容来源于stack exchange,提问作者jonnybolton16

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 16:44:29