检测交替的迹象

Bor*_*lik 4 python numpy

是否有一个很好的简短方法来判断python列表(或numpy数组)是否包含带有交替符号的数字?换一种说法:

is_alternating_signs([1, -1, 1, -1, 1]) == True
is_alternating_signs([-1, 1, -1, 1, -1]) == True
is_alternating_signs([1, -1, 1, -1, -1]) == False
Run Code Online (Sandbox Code Playgroud)

Bor*_*lik 7

好的,多亏了SO"相关"功能.我发现这个问题,并通过了答案ianalis和评论lazyr

def is_alternating_signs(a):
    return numpy.all(numpy.abs(numpy.diff(numpy.sign(a))) == 2)



print is_alternating_signs([1, -1, 1, -1, 1]) 
print is_alternating_signs([-1, 1, -1, 1, -1]) 
print is_alternating_signs([1, -1, 1, -1, -1]) 
Run Code Online (Sandbox Code Playgroud)

输出是

True
True
False
Run Code Online (Sandbox Code Playgroud)

  • 这对于`[0,1,0,1,0]`来说也是'真'.我的建议:`numpy.all(numpy.abs(numpy.diff(numpy.sign(a)))== 2)` (2认同)