我知道这个问题可能不清楚。我会尝试解释。
我有一个场景,我需要验证一系列值5,10,15,20....,
,只是生成序列的系统不是很准确,有时它可能会错过值或重复几个值,如{{1} }
因此,您可以看到5, 10,10,20,25,30,40.
的容差。
这没关系。我必须验证序列不会像5-10
我需要使用一个逻辑来写一个 PASS FAIL 条件,如果它看到单调增加的序列,偶尔会有错过或重复,如果它看到值向后或者差异超过{{1 }}
有人可以帮我识别正确的逻辑吗
答案 0 :(得分:1)
一衬垫:
def validate(li):
return all(x==y or 5<=(y-x)<=10 for x,y in zip(li,li[1:]))
如果你真的想断言你的数据来自一个单调增加的5来源,你也可能想要强调你的序列的最大值(li[-1]
)大约是{的一些逻辑。 {1}}。
答案 1 :(得分:0)
如何简单:
previousVal = ###
actualVal = ###
difference = actualVal - previousVal
if 0 <= difference <= 10 ## Change acc. to your requirement. Unclear if its 5-10 or 0-10
#PASS
else:
#FAIL!
如果它是一个你输入的列表,那么你可以用一个按位移的列表压缩原始列表,并迭代元组。
答案 2 :(得分:0)
如果序列是l
列表,您可以使用:
'FAIL' if any(l[i]<l[i-1] or l[i]-l[i-1]>10 for i in xrange(1,len(l))) else 'PASS'