可迭代对象求和
Python中的sum()
函数是一个内置函数,用于对可迭代对象中的数值元素进行求和。以下是其核心用法及注意事项的详细说明:
一、基本语法
sum(iterable[, start])
-
iterable :需求和的可迭代对象,如列表、元组、集合、字典(仅限数值类型)或范围对象。
-
start :可选参数,指定累加的起始值,默认为0。
二、核心用法示例
-
基础求和
计算整数列表的总和:
numbers = [1, 2, 3, 4, 5] total = sum(numbers) # 输出: 15
-
添加初始值
在总和基础上增加指定值:
total = sum(numbers, 10) # 输出: 25
-
处理混合数据类型
支持整数与浮点数混合运算:
mixed = [1, 2.5, 3, 4.75, 5] final_sum = sum(mixed) # 输出: 16.25
-
扩展到其他可迭代对象
包括元组、集合、字典(仅限数值键)等:
my_tuple = (1, 2, 3, 4, 5) total = sum(my_tuple) # 输出: 15
三、注意事项
-
数据类型限制
-
仅支持数值类型(整数/浮点数),若包含非数值类型会引发
TypeError
。 -
字典求和仅适用于数值键:
my_dict = {'a': 1, 'b': 2, 'c': 3} total = sum(my_dict.values()) # 输出: 6
-
-
性能优化
-
对于大型数据集,建议使用
numpy.sum()
以提高效率:import numpy as np arr = np.array([1, 2, 3, 4, 5]) total = np.sum(arr) # 输出: 15
-
若需按行/列求和,可通过
axis
参数实现:b = np.array([[3, 7, 6], [2, 4, 5]]) row_sum = b.sum(axis=1) # 输出: [16, 11]
-
-
替代方案
-
手动累加(低效):
total = 0 for number in numbers: total += number
-
使用生成器表达式:
total = sum(x for x in range(1000000))
-
-
错误处理
- 空序列返回
start
值:empty_list = [] total = sum(empty_list) # 输出: 0(默认start=0)
- 空序列返回
四、扩展应用场景
-
数据清洗 :过滤非数值元素后求和:
data = [1, 'a', 3.5, None] total = sum(x for x in data if isinstance(x, (int, float))) # 输出: 4.5
-
统计分析 :计算平均值:
scores = [85, 90, 78] average = sum(scores) / len(scores) # 输出: 84.333...
通过以上方法,sum()
函数可灵活应对不同场景的数值求和需求,同时结合numpy
等工具可进一步提升性能。