如何用Python计算列表中指定近期数据的最大连续增长次数?
解决方案
需求分析
给定余额列表(最右侧为最新数据),指定时段长度后,统计该时段内余额的最大连续增长次数:
- 若后一条余额大于前一条,连续增长计数+1
- 若不增长,计数重置为0
- 最终取所有计数中的最大值
Python 实现代码
def max_consecutive_growth(balance, period): # 截取最近period条数据 recent_balances = balance[-period:] if len(recent_balances) < 2: return 0 # 少于2条数据无法判断增长 current_count = 0 max_count = 0 # 从第2条数据开始遍历,和前一条比较 for i in range(1, len(recent_balances)): if recent_balances[i] > recent_balances[i-1]: current_count += 1 # 更新最大值 if current_count > max_count: max_count = current_count else: current_count = 0 return max_count # 测试示例 balance = [300,400,250,100,50,1,2,0,10,15,25,20,10,1,0,10,15] # 取最近10条数据,预期结果3 print(max_consecutive_growth(balance, 10)) # 输出:3
代码说明
- 数据截取:通过
balance[-period:]获取最新的period条余额数据,符合“最右侧为最新”的规则 - 边界处理:若截取后的数据不足2条,直接返回0(无法形成连续比较)
- 计数逻辑:遍历过程中实时维护当前连续增长计数和历史最大值,遇到不增长的情况立即重置当前计数
- 效率:仅需一次遍历,时间复杂度为O(n),n为指定时段长度,性能高效
内容的提问来源于stack exchange,提问作者Giampaolo Levorato
相关产品推荐
相关产品推荐

