您可以
itertools.groupby用来计算正数和非正数的组:
>>> x = [-3,2,7,-4,1,-1,1,6,-1,0,-2,1] >>> import itertools>>> len(list(itertools.groupby(x, lambda x: x > 0)))
结果:
8
在您的问题中,您要求:
计算变化,而不是分组
如果第一个元素不是正数,则计算额外的变化。
您可以通过直接测试第一个元素并调整结果来执行此 *** 作:
>>> len(list(itertools.groupby(x, lambda x: x > 0))) - (x[0] > 0)
或在进行分组之前在输入之前加上一个正数,然后从结果中减去1:
>>> len(list(itertools.groupby(itertools.chain([1], x), lambda x: x > 0))) - 1
注意您的输入列表是否可以为空-前一种解决方案将引发异常。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)