在 Python 中,数值累加是最常见的运算之一。sum() 内置函数提供了一种简洁高效的方式来对可迭代对象中的元素求和。相比手动循环加总,sum() 更加直观、性能更优,常用于列表、元组、集合等数据的聚合处理。

一、函数语法

sum(iterable, start=0)

参数:

iterable:必填,任意可迭代对象(如列表、元组、集合、字典、生成器等),要求其中的元素支持加法运算。

start:必填,可选,指定求和的初始值,默认是 0。

返回值:

返回所有元素与初始值 start 的和。

二、基础用法示例

1、对数字列表求和

nums = [1, 2, 3, 4, 5]
print(sum(nums))  # 15

2、指定起始值

nums = [1, 2, 3]
print(sum(nums, 10))  # 16(10 + 1 + 2 + 3)

3、对集合、元组求和

print(sum((10, 20, 30)))   # 60
print(sum({4, 5, 6}))      # 15

4、对字典求和

sum() 作用于字典时,默认只对键求和:

d = {"a": 10, "b": 20}
print(sum(d))  # 对键 "a"、"b" 求和无意义,会报错

正确方式是显式传入 d.values():

d = {"a": 10, "b": 20}
print(sum(d.values()))  # 30

5、对生成器求和

print(sum(i*i for i in range(5)))  # 30 (0+1+4+9+16)

三、进阶技巧

1、与 map() 配合

words = ["apple", "banana", "cherry"]
total_length = sum(map(len, words))
print(total_length)  # 17

2、与 zip() 配合实现向量求和

v1 = [1, 2, 3]
v2 = [4, 5, 6]
result = [sum(pair) for pair in zip(v1, v2)]
print(result)  # [5, 7, 9]

3、浮点误差问题

由于浮点数精度限制,sum() 结果可能存在微小误差。

print(sum([0.1] * 10))  # 0.9999999999999999

可使用 .fsum() 获得更精确的结果。

四、补充说明

1、适用对象

数字类型(int、float、complex)的可迭代对象以及支持加法运算的对象(如 Decimal、Fraction、自定义类)。

2、性能特点

sum() 内部采用循环加总实现,效率通常优于显式 for 循环。

对于大规模数据的数值运算,推荐结合 .sum()(效率更高)。

小结

sum() 是 Python 提供的快速求和工具,常用于数值序列的累加。它支持可迭代对象和可选起始值,既简洁又高效。

点赞有美意,赞赏是鼓励