2016-07-21 127 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