python - python中的有界累积和没有循环
问题描述
我需要执行一个有界的累积和 - 有点像电容器的充电状态。它不能超过其最大充电量,也不能低于 0。例如:
Initial Cumulative Sum Constrained Sum
1 1 1
7 8 8
5 13 10
-8 5 2
-7 -2 0
3 1 3
我有一段代码:
charge_0 = 0
for i in range (1, len(charge_discharge)):
charge_1 = min(battery_size,max(0,(charge_0+charge_discharge[i])))
StorageSOC.append(charge_1)
charge_0 = charge_1
它比其他一些选项运行得更快,但我知道它没有优化。一个简单的累积总和要快几个数量级,所以我相信有更好的方法来做到这一点。我不能只在边界处应用剪辑。没有for循环的正确方法是什么?
解决方案
你不需要旧的和新的。而且你正在跳过元素 0。这有点快,但我不相信你可以消除循环。
charge = 0
for delta in charge_discharge:
charge = min(battery_size,max(0,charge+delta))
StorageSOC.append(charge)
推荐阅读
- python-3.x - 使用 python3.7 在 Macosx 版本 10.14.6 上安装 pip 时出现问题
- java - Spring Kafka,覆盖 max.poll.interval.ms?
- clang - 如何获取Clang编译器内置函数的源码?
- c - C中符号楔的右对齐
- css - 如何在 mat-对话框中放置列和行
- javascript - 如何使用 CSS 渐变在模拟时钟上突出显示 25 分钟?
- javascript - 未捕获的 TypeError:time0.getHours 不是函数
- c# - P/Invoke RemoveMenu SetLastError 不起作用
- python - if/elif 语句的 Python 缩进错误
- python - PyPDF2脚本在文件夹中拆分pdf的每一页