是否有一个很好的简短方法来判断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)
好的,多亏了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)