如何在Python中实现带5倍数上限的列表累加及中间值输出
解决累加序列中插入5的倍数的问题
咱们得先搞清楚问题的核心:原itertools.accumulate只会直接生成累加后的数值,但我们需要在累加值跨过5的倍数时,先输出那个倍数,再输出当前的累加值。
那怎么实现呢?关键就是得盯着每一步的累加值,然后检查当前累加值和上一次累加值之间有没有5的倍数,如果有的话,先把这些倍数输出,再输出当前的累加值。
修改后的代码如下:
nums = [1,2,4,6] from itertools import accumulate prev_accum = 0 # 初始化上一次的累加值为0 for current in accumulate(nums): # 计算第一个大于上一次累加值的5的倍数 next_multiple = ((prev_accum // 5) + 1) * 5 # 遍历所有在(prev_accum, current)之间的5的倍数并输出 while next_multiple < current: print(next_multiple, end=' ') next_multiple += 5 # 输出当前的累加值 print(current, end=' ') # 更新上一次的累加值为当前值 prev_accum = current
代码解释:
- 我们用
prev_accum记录上一次的累加结果,初始值设为0,这样能覆盖第一个累加值之前的空白区间。 - 对于每个新的累加值
current,先算出第一个比prev_accum大的5的倍数next_multiple。 - 通过循环检查这个倍数是否小于当前累加值,如果是的话就输出它,然后找下一个5的倍数(加5),直到倍数不小于当前累加值为止。
- 最后输出当前的累加值,并更新
prev_accum为当前值,供下一次循环使用。
运行这段代码后,你就能得到期望的输出:1 3 5 7 10 13。
内容的提问来源于stack exchange,提问作者Python_newbie
相关产品推荐
相关产品推荐

