2016-07-21 129 views
1

有沒有一種有效的方法來跳過for循環中的迭代?在循環中跳過迭代

我有一個很大的數據集,包含S & P 500指數的期權價格。數據集範圍從1992年到2009年。現在,總共有3481個引用日期,我已經存儲在某個向量中,我稱之爲QDvector。我只對從2008年到2009年的報價日期感興趣。對於每個報價日期,我運行某個程序。引用日期從3290到3481.然而,在一些特殊情況下(很少),由於缺乏庫存數據,程序不起作用。如何在for循環中跳過這些迭代?

舉例來說,假設我有

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

,並假設我不想拿index == 3389考慮。我如何跳過這個迭代?

  • 我可以用一個while循環,但我真的不想參加審議該指數在所有的,因爲我也有繪製某些參數,我想跳過與index == 3389相應的參數。
  • 我可以從QDvector中刪除引用日期。我不喜歡這種方法,因爲我也必須改變太多其他變量。

我只是在尋找跳過某些迭代沒有任何後果的好方法。

回答

3

是的,continue聲明允許這樣做。

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

檢查索引並在找不到時執行代碼。

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

沒有else語句,當語句爲false時,什麼都不會發生,有效地跳過索引。

或者:

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