如何计算数组中多个datetime.timedelta对象的平均值并格式化输出
多timedelta元素计算平均会话耗时实现方法
核心逻辑:datetime.timedelta原生支持算术运算,不需要手动拆分每个元素的秒、微秒字段做计算,两步就能得到结果。
- 第一步:对存储所有时长的数组求和,得到总时长。注意调用
sum()时要传入初始值datetime.timedelta(0),否则默认初始值为整数0会触发类型错误。 - 第二步:总时长除以样本总数(即数组长度),得到的结果本身就是
timedelta类型,直接转字符串就是你需要的x:xx:xx.xxxxxx格式。
可直接运行的代码示例
import datetime # 你已有的时长存储数组 duration_list = [ datetime.timedelta(seconds=1462, microseconds=936503), datetime.timedelta(seconds=1706, microseconds=983165) ] # 计算总时长 total_duration = sum(duration_list, start=datetime.timedelta(0)) # 计算平均时长,结果为timedelta类型 avg_duration = total_duration / len(duration_list)
用你给出的示例数据计算,avg_duration的实际值为0:26:24.959834,完全符合你要求的输出格式。
对接PDF输出格式
你之前写的分秒转换逻辑可以直接复用,不需要修改:
pdf_output = f"会话平均耗时{avg_duration.total_seconds() // 60:.0f}min {avg_duration.total_seconds() % 60:.0f}s"
如果需要向下取整而非四舍五入,把取整逻辑调整为整数截断即可。
低版本Python兼容写法
如果你使用的是Python 2环境(不支持timedelta直接除以整数),可以先转成总秒数计算平均值,再转回timedelta对象:
avg_seconds = total_duration.total_seconds() / len(duration_list) avg_duration = datetime.timedelta(seconds=avg_seconds)
内容的提问来源于stack exchange,提问作者Olovia.solfjell
相关产品推荐
相关产品推荐

