0

我确实为此编写了一个代码:

for i in xrange(len(Derivative)):
    if ((Derivative[i-1] > Derivative[i]) and (Derivative[i+1] < Derivative[i]) and (Derivative[i-1] > 0.0) and (Derivative[i+1] < 0.0) and (Derivative[i] > 0.0)):
        print str(i+1)

Derivative是我必须检测过零的列表,主要是在过零之前的值为正而过零之后的值为负的值。

我附上了图表Derivative以进一步阐明问题!

我想知道在 Python 中是否有更好的方法,我的意思是更短和更精确的代码?

4

1 回答 1

1

您只需将当前导数与它后面的导数进行比较。因此,您可以删除对 Derivative[i-1] 的任何引用。如果 Derivative[i] 大于零,并且 Derivative[i+1] 小于零,则必然 Derivative[i+1] < Derivative[i]。因此,您也可以删除该条件。这留下:

for i in xrange(len(Derivative)-1):
    if Derivative[i] > 0 and Derivative[i+1] < 0:
        print "crossing between indexes {} and {}".format(i, i+1)

另外,我将论点缩短了xrange一个。否则,你会得到list index out of range.

于 2013-07-15T18:44:59.590 回答