入力のリストが与えられています。リストの最後のxは、テストに使用する数値です。だから、最初のn-x要素は、xの要素を使ってテストしたい要素です。例えばwhileループがPythonを終了しない
:
test_case = [0.18677649597722776, 0.21992417009282958, 0.21001370207789635, 0.2576939078119566, -0.26790678064174844, 0.23723906040549575, 0.23796810219833633, 0.12311570730540798, 0.291222989748139, -0.46589179980005796, -0.5679935337540711, -0.541967302717414, 0.2797199715268191, -0.0462338707795437, 0.3352382038488532, -0.6395453091791992, -0.7116194799285872, -0.6827853559995019, 0.4131897184013285, 0.07125041194386302, 0.47179441094288416, -0.5670171363969451, -0.6493889334859158, -0.6214861349381114, 0.6332084272531783, 0.2946607775328391, 0.7252115985158697, -0.48494480580385074, -0.5584250339723696, -0.5329318548632481, 0, 1, 0, 5, 5, 5]
私は最初の30個の数字の上に私のテストの一部として使用したい最後の6つの数字。私はtest_case[31] < 3
、私にtest_case[0]
を与えて、そうでない場合は私に-999
を与えるように30の数字を介して循環したい。これはtest_case[36] < 3
まで繰り返され、私にtest_case[5]
を与えます。その後、test_case[31]
を返して、test_case[6]
とループで再び使用する必要があります。
私がtest_case[30]
にいると、私はそれを止めたいです。
は、ここで私が持っているものだ。私は一般の関数を作るしようとしている
def test_inputs(x, comp_size):
counts = x[-comp_size:]
inputs = x[:(len(x)-comp_size+1)]
counts_pos = 0
inputs_pos = 0
while inputs_pos < (len(x)-comp_size+1):
if counts_pos == 6:
counts_pos = 0
if counts[counts_pos] < 3:
x.append(inputs[inputs_pos])
print inputs_pos
print counts_pos
inputs_pos += 1
counts_pos += 1
else:
x.append(-999)
print inputs_pos
print counts_pos
inputs_pos += 1
counts_pos += 1
。この場合、実行することができます:
test_inputs(test_case, 6)
しかし、これはinputs_pos == 31
で停止しません。私は印刷のステートメントを入れて、それはちょうど行くように見えます。
フィルターを使用すると簡単な方法はありますか?
ループ条件はlen(x)に依存しますが、len(x)が増加し続けるように、ループを介して繰り返しごとに1つの項目をxに追加しています。 – jarmod
それは、ありがとうございます! – WhitneyChia