2
Test Array = [1, 2, 3, 1, 0.4, 1, 0.1, 0.4, 0.3, 1, 2]

3 つの連続したエントリが 0.5 未満である最初の時間を見つけ、この発生のインデックスを返すために、配列を反復処理する必要があります。

Test Array = [1, 2, 3, 1, 0.4, 1, 0.1, 0.4, 0.3, 1, 2]
                           ^       ^    ^    ^
(indices)    [0, 1, 2, 3,  4,  5,  6,   7,   8,  9, 10]
                                   ^

したがって、このテスト配列内で検索されるインデックス/値は 6 です。

提案された解決策に加えて、「3 つの連続する値 <0.5」という条件が満たされない場合に返される値を知っておくとよいでしょう。単に何も返さないのでしょうか? または最後のインデックス番号?

(条件を満たさない場合は戻り値を0にしたい)

4

2 に答える 2

0
from itertools import groupby
items = [1, 2, 3, 1, 0.4, 1, 0.1, 0.4, 0.3, 1, 2]

def F(items, num, k):
    # find first consecutive group < num of length k
    groups = (list(g) for k, g in groupby(items, key=num.__gt__) if k)
    return next((g[0] for g in groups if len(g) >= k), 0)

>>> F(items, 0.5, 3)
0.1
于 2013-06-26T10:55:23.050 に答える