2016-07-21 19 views
1

forループ内の反復をスキップする有効な方法はありますか?forループ内の反復をスキップする

私は、S & P 500インデックスのオプション価格で構成される大きなデータセットを持っています。データセットは1992年から2009年までの範囲です。合計で、私はQDvectorという特定のベクターに保存した3481の引用日を持っています。私は2008年から2009年までの引用日にのみ興味があります。引用日ごとに、特定のプログラムを実行します。関心のある見積り日付は3290年から3481年までです。しかし、一部の特別なケース(ごくわずかです)では、株式データがないためにプログラムが機能しません。 forループでこれらの反復をスキップするにはどうすればよいですか?例えば

、私は

for index = 3290:3481 
    [...] 
end 

を持っていると私は、アカウントにindex == 3389を取るにしたくないと仮定したとします。この繰り返しをスキップするにはどうすればよいですか?

  • 私もいくつかのパラメータをプロットする必要があると私はindex == 3389に対応するパラメータをスキップするために、私は、whileループを使用することができますが、私は本当に全く考慮して、このインデックスを取る必要はありません。
  • QDvectorから引用日を削除することができます。あまりにも多くの変数を変更する必要があるので、私はこのアプローチを好まない。

私は、単に結果を出さずに特定の反復をスキップする良い方法を探しています。

答えて

3

はい、continueステートメントでこれを行うことができます。

for index = 3290:3481 
    [...] 
    continue; % wherever applicable 
end 
0

指数をチェックし、それが見つからないだ時はいつでもあなたのコードを実行します。

for index = 3290:3481 
    if index != 3389 
     [...] 
    end 
end 

else文を指定しないと、文が偽で効果的にインデックスをスキップしても何も起こりません。また

:チェックが実行され、ほとんどの場合、他の上に進行されますので、

for index = 3290:3481 
    if index == 3389 
     continue 
    else 
     [...] 
    end 
end 

は、わずかに少ない効率的です。しかし、わずか191回のパスでは、目立たないでしょう。

+0

あなたは他のものは必要ありませんが、ループ本体の残りの部分をスキップします – pm100

+1

[こちら](http://stackoverflow.com/questions/36677256/if-vs-continue-statement-in-a-for) -loop/36677535#36677535)を使用してパフォーマンスを比較します – Suever

関連する問題