我相信有一个简单的方法可以做到这一点,但也许我忽略了一些东西
假设我的阈值为2。我想在值超过2时立即执行操作
如果后续值也大于或等于2,则我不想执行该操作
我唯一能弄清楚如何做到这一点的方法是将其与之前的值进行比较,我认为它是clugy而不是pythonic
所以:我有一个系列:
series = [1.99, 1.88, 2.21, 2.32, 2.42, ....]
所以在series[2]
我想做点什么,因为我已经超过了2.0的阈值。但之后我不想做同样的事情。超过2.0会触发操作,但不会重复后续值大于2.0的操作
我能想到的唯一方法是与前面的值进行比较:
因此:
for i in range(length(series):
if series[i] > 2.0 and series[i-1] <= 2.0:
do something
这会起作用,但似乎是糟糕的编程
有没有更像Python的方法
请指导
根据评论,这里有一个可能的解决方案^{} :
印刷品:
您可以使用一个状态指示器来了解您在之前低于阈值之后现在是否已经高于阈值。这将允许您在不使用索引(不是很Pythonic)的情况下继续操作:
如果你经常做这样的循环,你可能想考虑创建一个特殊的迭代器,它只返回应该触发动作的值(即在阈值触发中断):
函数breaks()的状态参数允许您决定序列中的第一个条目是否被视为中断(例如,当从上一个序列的最后一个状态继续时)
相关问题 更多 >
编程相关推荐