0

非常に大きなデータセットを処理しています。データ セットはデータ プロファイルで構成され、各プロファイルは配列に格納されます。配列ごとに、最初の値を含む連続した一連の値を検索し、条件 (値 >= 26) に一致させる必要があります。

例:

入力値の場合=[30.1, 29.7, 28.5, 27.1, 20, 17, 16]

アルゴリズムが返す [30.1, 29.7, 28.5, 27.1]

入力値の場合=[30.1, 29.7, 28.5, 27.1, 20, 17, 28, 27]

アルゴリズムが返す[30.1, 29.7, 28.5, 27.1]

入力値の場合=[25, 30.1, 29.7, 28.5, 27.1, 20, 17, 28, 27]

アルゴリズムが返すNone

配列を解析して「if」テストを行うことはできますが、分析するシリーズが数十万あることを考えると、より最適化されたものを探しています。

4

1 に答える 1

5

これは、述語が false になるまで要素を返すitertools.takewhileを使用して適切に実行できます。

itertools.takewhile を使用する例を次に示します。

>>> from itertools import takewhile
>>> list(takewhile(lambda e:e>=26, [30.1, 29.7, 28.5, 27.1, 20, 17, 16]))
[30.1, 29.7, 28.5, 27.1]

最後の例では、 は返されませんNoneが、要件に合わせて簡単に成形できる空の反復可能オブジェクトです。

>>> list(takewhile(lambda e:e>=26, [25, 30.1, 29.7, 28.5, 27.1, 20, 17, 28, 27]))
[]
于 2013-02-15T14:39:07.903 に答える