Python有什么快速计算队列中连续符合某条件的片段的方法
主要是想实现或扩展股票公式中"last(条件)"函数
就是从队列当前位置向后倒推连续符合条件的个数
如
[1,43,5,6,6,7,8,9]
当前位置最后一个,条件是n(i)>=n(i-1),得出结果5或者[5,6,6,7,8,9]
由于这段代码调用频繁,所以需要效率高的,用什么算法或模块实现 Python3.3
pandas或numpy之类模块有类似高效的函数么?
类似地,在列表(不一定是数列)某个位置 i ,向后查找符合条件的连续片段
一般有什么算法?只是for去逐个比较条件么?
[解决办法]
一些想法:
一般情况下,好像没有什么好算法:假设从当前位置起有k个连续符合条件的数,你只有检查过这k个数中的每一个,才能断定这一点。所以简单的逐个比较已经是最优了。
如果你需要重复查询同一个数列(用同一个条件),可以遍历一遍,记住结果。
如果查询的条件有传递性的话,可以只记住每个递增子序列开始的位置,查询时用二分法定位。能节省一点空间,如果子序列比较长的话。
[解决办法]
用c语言吧
生成三个数组
第一个 差
第二个 累计和
第三个 结果