【发布时间】:2017-06-07 19:22:55
【问题描述】:
我编写了一个函数,它允许我遍历一个列表,将值与前任进行比较,并断言在该点列表对于一定数量的条目变得“稳定”。 列表中的值代表一个信号,可能会或不会达到稳定点。 我想出了这个:
def unstableFor(points, maxStable):
count = 0;
prev = points[0]
for i in range(1, len(points)):
if points[i] == prev:
count = count + 1
else:
count = 0
prev = points[i]
if count >= maxStable:
return i
return len(points) - 1
然后调用者使用返回的值来删除列表的最后一部分。
它完成了它的工作,但是,我对它看起来多么笨重很不满意。你能想出一种更 Python 的、可能是纯函数式的方式来执行这个过滤操作吗?
【问题讨论】:
-
附带说明,我认为
count应该从 1 开始 -
您还可以显示示例输入列表和预期输出
-
条目是否必须始终连续才能获得稳定的资格?
-
是的,它们必须是后续的
标签: python list functional-programming filtering purely-functional