说我有这样的数据:
number_stream = [0,0,0,7,8,0,0,2,5,6,10,11,10,13,5,0,1,0,...]
Run Code Online (Sandbox Code Playgroud)
我想处理它寻找符合某种模式的"颠簸".
想象一下,我有自己的自定义正则表达式语言来处理数字,其中[[> = 5]]表示任何数字> = 5.我想捕获这种情况:
([[ >=5 ]]{3,})[[ <3 ]]{2,}
Run Code Online (Sandbox Code Playgroud)
换句话说,我想开始捕捉任何时候我向前看并连续看到3个或更多值> = 5,并且在我向前看并且看到2 +值<3时停止捕获.所以我的输出应该是:
>>> stream_processor.process(number_stream)
[[5,6,10,11,10,13,5],...]
Run Code Online (Sandbox Code Playgroud)
注意,第一个7,8,...被忽略,因为它不是足够长的时间,并且捕获结束之前的0,1,0....
我还想要一个stream_processor对象,我可以在后续process调用中逐步传递更多数据,并在完成后返回捕获的块.
我已经写了一些代码来做这件事,但它很丑陋且状态机器,我不禁觉得我错过了一些明显的东西.干净利落的想法吗?
| 归档时间: |
|
| 查看次数: |
401 次 |
| 最近记录: |